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

C 为什么printf不只打印ini字符串?,c,C,我需要将“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”字符串复制到“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);
}
但应该是这样的:

abcdefghij

jihgfedcba

字符串需要空终止符

#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);
}
#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";