如何在C中将字符串值分配给二维数组?

时间:2018-10-24 14:17:37

标签: c arrays string

如何在C中为二维数组分配字符串值?

我有一个示例代码,但是无法正常工作。

#include<stdio.h>

void main()
{
    char f[20][20];

    f[0]="abc"; //Error Happens Here

    printf("%s",f[0]);
}

2 个答案:

答案 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中的任何新手书籍都应该告诉您,数组(尤其是字符串)的处理方式不同于简单变量,例如intdouble等。 所以...。阅读愉快!

答案 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()