Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存在整数时C中字符数组的行为_C_Arrays_Char - Fatal编程技术网

存在整数时C中字符数组的行为

存在整数时C中字符数组的行为,c,arrays,char,C,Arrays,Char,我无法获得此程序的输出意味着此程序如何运行?有人能帮我吗 #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; } #包括 int main(){ 字符c[]={'1','2

我无法获得此程序的输出意味着此程序如何运行?有人能帮我吗

#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;
}
#包括
int main(){
字符c[]={'1','2','3',0','1','2','3'};
printf(c);//给出123作为输出
字符d[]={'1','0','3',0','1','2','3'};
printf(d);//给出103作为输出
返回0;
}
这将以字符串形式输出我在0之前插入的所有字符。

我还想解释一下为什么Prtff在0之前打印所有的字符?

< p>你的数组中有一个<代码> 0 < /代码>。code>printf将打印到
char
数组中的第一个
0
。此外,单引号中不能有多个字符。单引号定义字符而不是字符串。最后,应该以
0
结束
char
数组

试试这个:

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

注意,在“代码< 0”/代码>中间有一个引号,使它成为一个字符,并且在最后的<代码> 0代码>结尾处有“强>不/强”引号以结束字符串。

我的理解0等于(通常)到<代码> null < /> >,PrtTF打印到找到的第一个<代码> 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而不是终止符。

printf的参数错误。它应该是一个字符串。0是C中字符串的结尾。那么为什么它要打印0之前的所有字符?我知道字符数组在看到0时结束,但printf为什么这样做?这就是字符串在C中的工作方式。您应该查找它。字符串只是一个字符数组,以0表示结束
printf
需要一个字符串(精确地说是指向第一个字符的指针),因此它会一直打印到数组中的第一个0。您必须以0结束数组,否则它将继续打印垃圾,直到在内存中找到一个0为止,这不是您想要的。它会怎么做
printf
打印您传递的字符串。如果要打印字符数组的地址,请尝试以下操作:
printf(“%p”,c))
%p
是指针地址的格式说明符,您可以将其作为参数传递给数组。“单引号中不能有多个字符”是的,但可以。另外请注意,
'0'
0
是不同的。字符串以值
0
结尾,而不是字符
'0'
。如果在中查找字符
'0'
的值,您将看到它实际上是30。