如何在C中为二维数组赋值?
如何在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() {
#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倍。