请问为什么使用%s输出不了字符串

#include<stdio.h>
int main(){
char a[10];
int i;
//scanf("%s",a);
for(i=0;i<=8;i++)
{
a[i]=i;
}
a[9]='\0';
printf("%s",a);
}

如果直接给字符变量赋值为int型,则对应的是ACSII码中对位的字符,在ACSII中,0是NUL,也就是我们常说的 '\0'

楼主的代码中,a[0] = '\0',所以没有看到结果。

改一下代码能够看得更清楚,让a[3]为0:


#include<stdio.h>
int main(){
    char a[10];
    int i;
    //scanf("%s",a);
    for(i=0;i<=8;i++)
    {
        a[i]=i+'a';
    }
    a[3]=0;
    printf("%s",a);
    return 0;
}

输出:

img