我试过这段代码:
#include <stdio.h>
main()
{
char s[10][10];
s[10] = "Hi!";
printf("%s",s[1]);
return 0;
}
编译器给了我这个错误:
".......lvalue expected"
我刚开始学习C,所以我不知道如何做到这一点。
答案 0 :(得分:4)
您可以在定义时间进行初始化,例如:
#include <stdio.h>
int main()
{
char s[10][10] = { "Hello", "Hi!", "Bonjour", "Hola", "", "", "", "", "", "" };
printf("%s\n", s[1]);
return 0;
}
或稍后使用strcpy()
分配字符串,例如
#include <stdio.h>
#include <string.h>
int main()
{
char s[10][10];
strcpy(s[1], "Hi!"); // s[1] = "Hi!"
printf("%s\n", s[1]);
return 0;
}
答案 1 :(得分:0)
当你在代码中写"Hi!"
时,它是伪装的指针值(例如,编译器会用"Hi!"
替换地址到内存中包含四个字节'H'的位置,'i ','!'和'\ 0')。对于变量s
,内存在声明时已经分配,并且是变量的一个组成部分,因此指定一个元素的指针没有意义(类型不匹配)。
如果您改为将s
声明为
char *s[10];
然后您就可以将代码编写为
s[1] = "Hi!";
printf("%s",s[1]);