如何在C中为二维数组分配字符串值?
我有一个示例代码,但是无法正常工作。
#include<stdio.h>
void main()
{
char f[20][20];
f[0]="abc"; //Error Happens Here
printf("%s",f[0]);
}
答案 0 :(得分:2)
您可以尝试这个。
void main()
{
char f[20][20] = {0};
sprintf(f[0], "abc"); // or strcpy(f[0], "abc"); but I prefer sprintf
printf("%s",f[0]);
}
实际上,C
中的任何新手书籍都应该告诉您,数组(尤其是字符串)的处理方式不同于简单变量,例如int
,double
等。
所以...。阅读愉快!
答案 1 :(得分:2)
此
f[0]="abc";
是错误的,因为f[0]
是 char数组,并且通过执行f[0]="abc";
,您试图更改数组f[0]
的基址,这是不可能的。您只需考虑像一维char数组之类的例子即可
char arr[10] = "hello";
这里arr
表示数组的基地址,并且不能将其作为其常量指针。现在,如果您这样做
arr = "bye"
在这里,您尝试将arr
指向其他地址(bye
地址),而不是较早的基地址。
正确的方法是
strcpy(f[0],"abc");
最好使用strncpy()
代替@Eric here指出的strcpy()
。