1

私はこのコードを試しました:

#include <stdio.h>

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

コンパイラは私にこのエラーを与えました:

".......lvalue expected"

Cの勉強を始めたばかりなので、これを行う方法がわかりません。

4

2 に答える 2

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;
}
于 2013-02-26T23:47:25.860 に答える
0

コードに書き込む"Hi!"と、それは変装したポインタ値になります (たとえば、コンパイラは"Hi!"、4 バイトの 'H'、'i'、'!'、'\0' を含むメモリ内のどこかへのアドレスに置き換えます)。variablesの場合、メモリは宣言時に既に割り当てられており、変数の不可欠な部分であるため、要素へのポインターの割り当ては意味がありません (型の不一致)。

代わりに次のように宣言するs

char *s[10];

次に、コードを次のように書くことができます

s[1] = "Hi!";
printf("%s",s[1]);
于 2013-02-27T00:09:02.897 に答える