私はこのコードを試しました:
#include <stdio.h>
main()
{
char s[10][10];
s[10] = "Hi!";
printf("%s",s[1]);
return 0;
}
コンパイラは私にこのエラーを与えました:
".......lvalue expected"
Cの勉強を始めたばかりなので、これを行う方法がわかりません。
私はこのコードを試しました:
#include <stdio.h>
main()
{
char s[10][10];
s[10] = "Hi!";
printf("%s",s[1]);
return 0;
}
コンパイラは私にこのエラーを与えました:
".......lvalue expected"
Cの勉強を始めたばかりなので、これを行う方法がわかりません。
定義時に初期化することができます。例:
#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;
}
コードに書き込む"Hi!"
と、それは変装したポインタ値になります (たとえば、コンパイラは"Hi!"
、4 バイトの 'H'、'i'、'!'、'\0' を含むメモリ内のどこかへのアドレスに置き換えます)。variables
の場合、メモリは宣言時に既に割り当てられており、変数の不可欠な部分であるため、要素へのポインターの割り当ては意味がありません (型の不一致)。
代わりに次のように宣言するs
と
char *s[10];
次に、コードを次のように書くことができます
s[1] = "Hi!";
printf("%s",s[1]);