为什么printf不只打印ini字符串?

我需要将“ ini”字符串复制到“ final”字符串中,以反转字符顺序,但是当我打印字符串“ ini”时,似乎同时打印了“ ini”和“ final”。

语言:C

#include <stdio.h>

void main(){
    char ini[10]={'a','b','c','d','e','f','g','h','i','j'};
    char final[10];

    for (int i = 0; i < 10 ; i++) {
        final[i]=ini[10-1-i];
    }
    printf("%s\n\n",ini);
    printf("%s",final);
}

我的输出是:

abcdefghijjihgfedcba

jihgfedcba

但是应该是这样:

abcdefghij

jihgfedcba
wbx520czh 回答:为什么printf不只打印ini字符串?

字符串需要一个空终止符。

#include <stdio.h>

void main(){
    char ini[11]={'a','b','c','d','e','f','g','h','i','j',0};
    char final[11];

    for (int i = 0; i < 10 ; i++) {
        final[i]=ini[10-1-i];
    }
    final[10] = 0;
    printf("%s\n\n",ini);
    printf("%s",final);
}

如果将字符串文字用作初始化程序,则它将自动包含终止符。以下是等效的:

char ini[] = "abcdefghij";
本文链接:https://www.f2er.com/3149858.html

大家都在问