Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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_String - Fatal编程技术网

打印字符数组(C)仅打印第一个字母

打印字符数组(C)仅打印第一个字母,c,arrays,string,C,Arrays,String,我需要手动填充一个字符数组。我是这样宣布的: char* coor = malloc(sizeof(char) * 5); 然后我手动将每个变量分配到其位置: coor[0] = O_colum; coor[2] = ((char)(O_row+48)); coor[3] = '-'; coor[4] = D_colum; coor[5] = ((char)(D_row+48)); (D_行和O_行是整数,我需要字符形式的数字,而不是ASCII中的等效值;这就是为什么我要+48) 当我试

我需要手动填充一个字符数组。我是这样宣布的:

char* coor = malloc(sizeof(char) * 5);
然后我手动将每个变量分配到其位置:

coor[0] = O_colum;
coor[2] = ((char)(O_row+48));

coor[3] = '-';
coor[4] = D_colum;

coor[5] = ((char)(D_row+48));
D_行
O_行
是整数,我需要字符形式的数字,而不是ASCII中的等效值;这就是为什么我要
+48

当我试图打印它时,问题就出现了。如果我使用
printf(“%s”,coor)
它只打印第一个字符,我不知道为什么。我正在使用
%s
,因此它应该打印字符串中的所有字符。 当我这样做时:

char *p = "hello";
printf("%s",p);

它确实会打印您的代码中有两个错误:

  • 您正在跳过数组的位置1。这可能是 它只打印第一个元素的原因
  • 您需要将结束字符串
    \0
    添加到 绳子
这应该可以解决这个问题:

char* coor = malloc(sizeof(char) * 6);

coor[0] = O_colum;
coor[1] = ((char)(O_row+48));

coor[2] = '-';
coor[3] = D_colum;

coor[4] = ((char)(D_row+48));
copr[5] = '\0';

五元素数组的最后一个索引是4,而不是5。。。您正在跳过元素1。另外,您需要在末尾使用空字节。。。因此,您应该分配6个字节,并将最后一个字节设置为0。OMG谢谢,修复了它,在这里写入元素1时跳过元素1是一个问题,但真正导致问题的是空字节!谢谢注:
sizeof(char)
与本标准定义的
1
不会有任何区别。因此,使用它毫无益处。如果要始终使用正确的类型,请使用
sizeof(*coor)