-4

我无法得到这个程序的输出意味着这个程序是如何运行的?有人可以帮我吗?

#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 之前的所有字符?

4

2 回答 2

4

你有一个0在你的阵列中间。printf将打印到数组0中的第一个。char此外,单引号中不能包含多个字符。单引号定义字符而不是字符串。最后,您应该char0.

尝试这个:

char c[]={'1','4','3','3','0','1','2','3',0};

请注意,中间有引号0以使其成为字符,而最终字符串周围没有引号0

于 2012-10-28T13:55:48.823 回答
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);

当打印cdprintf 打印到NULL它遇到的第一个是0. 但是,当您将'0'其视为字符 0 而不是终止符时。

于 2012-10-28T14:07:58.433 回答