Abr*_*ham -1 c string null character
我编写了以下程序来了解\0角色在C程序中的工作原理:
#include <stdio.h>
int main(void) {
char a[] = {'1','2','\0','2'};
int i=0;
for (i=0; i<4; i++){
printf("%c\n",a[i]);
}
printf("%s",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
嗯,没关系,我有以下输出:
sh-4.3$ gcc -o main *.c
sh-4.3$ main
1
2
2
Run Code Online (Sandbox Code Playgroud)
但是当我\n从printf命令中删除字符时,我12在输出中收到一个额外的:
//. Same as above
for (i=0; i<4; i++){
printf("%c",a[i]);
}
//. Same as above
Run Code Online (Sandbox Code Playgroud)
输出是:
12sh-4.3$ gcc -o main *.c
sh-4.3$ main
12212
Run Code Online (Sandbox Code Playgroud)
虽然我认为我必须看到这个:
12sh-4.3$ gcc -o main *.c
sh-4.3$ main
122
Run Code Online (Sandbox Code Playgroud)
请注意,我使用此在线编译器来编译上述程序.这是GNU GCC v4.8.3
12你得到的额外的是从printf("%s",a);线:
1,2,空(无),和2.a打印到空字符(\0),所以12.这就是你获得输出的原因12212.
使用换行符打印输出1,2新行2,以及12单独的行.
在你的例子中,你错过了最后一个,12因为你最后没有新行,所以你的shell提示符被打印出来:在你的问题中注意你12sh-4.3$在其中一行的开头.