我无法获得此程序的输出意味着该程序如何运行?有人可以帮助我吗?
#include<stdio.h>
int main(){
char c[]={'1','2','3',0,'1','2','3'};
printf(c); //gives 123 as output
char d[]={'1','0','3',0,'1','2','3'};
printf(d); //gives 103 as output
return 0;
}
这将输出作为字符串输出我在0之前插入的所有字符。
我还想解释为什么printf在0之前打印所有字符?
答案 0 :(得分:4)
您的阵列中间有一个0
。 printf
将打印到0
数组中的第一个char
。此外,单引号中不能包含多个字符。单引号定义字符而不是字符串。最后,您应该使用char
结束0
数组。
试试这个:
char c[]={'1','4','3','3','0','1','2','3',0};
请注意,中间的0
附近有引号使其成为一个字符,并且在最终0
周围有没有引号来结束字符串。
答案 1 :(得分:2)
据我所知,0等于(通常)为NULL
,printf打印到它找到的第一个NULL
终止符。
在你的情况下
char c[]={'1','2','3',0,'1','2','3'};
printf(c);
char d[]={'1','0','3',0,'1','2','3'};
printf(d);
当打印c
和d
printf打印到遇到NULL
的第一个0
时。但是当你放'0'
时,它会将其视为字符0而非终结符。