我正在尝试在C中打印一个字符数组但我无法打印所有内容。 我要打印: B1 B2 我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char def[3][10]; //define a multidimensional array of characters
strcpy(def[0],"b1"); //insert "b1" at first line
strcpy(def[1],"b2"); //insert "b2" at first line
printf("%s",def); //print everything?
}
以上代码仅打印b1
。我已经尝试过了:
printf("%s",def[0]);
printf("%s",def[1]);
但是我有错误“无效使用带有未指定边界的数组”
答案 0 :(得分:2)
printf("%s", def);
%s
转换规范需要一个字符串。 def
是一个字符串数组,而不是字符串。
要打印第一个字符串,请执行以下操作:
printf("%s", def[0]);
如果要打印第二个字符串,请执行以下操作:
printf("%s", def[1]);
如果你想打印两个字符串:
printf("%s%s", def[0], def[1]);
打印数组中的所有字符串:
for (i = 0; i < sizeof def / sizeof *def; i++)
{
printf("%s", def[i]);
}
答案 1 :(得分:0)
首先用语法初始化数组,这样整个数组就会得到null值。 然后执行相同的步骤,您可以在输出中获得字符串。
语法: char def [3] [10] = {};
或 首先定义这个数组,然后通过bzero函数使整个数组为零值。
bzero(DEF,的sizeof(DEF));
您需要在程序中包含stdlib.h头文件。
答案 2 :(得分:0)
您可以将char
的整个多维数组打印为单个字符串,只需一次调用:
printf("%s", (char*) multiDimensionalArray);
因为多维数组的元素是连续的。但是,正如简单数组一样,printf
在第一个终止字符处停止,所以它通常是没有意义的,因为我们几乎总是在每个“行”的末尾都有一个终止字符,就像你或者一些未初始化的垃圾一样。
char def[3][2];
memcpy(def[0], "b1", 2);
memcpy(def[1], "b2", 2);
def[2][0] = '\0';
printf("%s", (char*) def); // print everything
但是以这种方式使用数组很痛苦,你需要的是数组上的循环。
(您只需使用*puts
打印字符串)