有没有办法将字符串分配给与其声明分开的字符数组?

时间:2013-02-26 23:45:27

标签: c

我试过这段代码:

#include <stdio.h>

main()
{
char s[10][10];
s[10] = "Hi!";
printf("%s",s[1]);
return 0;
}

编译器给了我这个错误:

".......lvalue expected"

我刚开始学习C,所以我不知道如何做到这一点。

2 个答案:

答案 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]);