Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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,如何在C中为二维数组赋值 我有一个示例代码,但它不起作用 #include<stdio.h> void main() { char f[20][20]; f[0]="abc"; //Error Happens Here printf("%s",f[0]); } #包括 void main() { 字符f[20][20]; f[0]=“abc”;//此处发生错误 printf(“%s”,f[0]); } 您可以试试这个 void main() {

如何在C中为二维数组赋值

我有一个示例代码,但它不起作用

#include<stdio.h>

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

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

    printf("%s",f[0]);
}
#包括
void main()
{
字符f[20][20];
f[0]=“abc”;//此处发生错误
printf(“%s”,f[0]);
}
您可以试试这个

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
)等)不同。。。 所以快乐阅读

你可以试试这个

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
)等)不同。。。 所以快乐阅读

这个

f[0]="abc"; 
错误,因为
f[0]
是字符数组,通过执行
f[0]=“abc”
您正试图更改数组
f[0]
的基址,这是不可能的。您可以通过考虑一维字符数组的例子来理解这一点,比如

char arr[10] = "hello";
这里的
arr
表示数组的基址&不能将其更改为常量指针。现在如果你这样做了

arr = "bye"
这里您试图将
arr
指向其他地址(
bye
address),而不是先前的基址

正确的方法是

strcpy(f[0],"abc"); 
最好使用
strncpy()
而不是@Eric指出的
strcpy()

这个

f[0]="abc"; 
错误,因为
f[0]
是字符数组,通过执行
f[0]=“abc”
您正试图更改数组
f[0]
的基址,这是不可能的。您可以通过考虑一维字符数组的例子来理解这一点,比如

char arr[10] = "hello";
这里的
arr
表示数组的基址&不能将其更改为常量指针。现在如果你这样做了

arr = "bye"
这里您试图将
arr
指向其他地址(
bye
address),而不是先前的基址

正确的方法是

strcpy(f[0],"abc"); 

最好使用
strncpy()
而不是@Eric指出的
strcpy()

您需要使用
strcpy
来复制字符串。试试strcpy(f[0],“abc”)字符b[70];b=“6id4h”您也不能这样做。char[]不能是l值。首先,应该使用线性数组。在这之后,就很清楚该如何做了。您需要使用
strcpy
来复制字符串。试试strcpy(f[0],“abc”)字符b[70];b=“6id4h”您也不能这样做。char[]不能是l值。首先,应该使用线性数组。在输入字符串包含%s(或类似值)之前,使用sprintf()而不是strcpy()是非常好的,然后程序崩溃。(显然,在本例中它不包含一个参数,但如果参数是宏或变量而不是字符串文字,那么这可能就不再那么明显了)。(strncpy()会更安全)
sprintf
的效率也很可能比
strcpy
低约100倍。使用sprintf()而不是strcpy()完全可以,直到输入字符串包含%s(或类似值),然后程序崩溃。(显然,在本例中它不包含一个参数,但如果参数是宏或变量而不是字符串文字,那么这可能就不再那么明显了)。(strncpy()会更安全)
sprintf
的效率也很可能比
strcpy
低约100倍。