前提・実現したいこと
ここに質問の内容を詳しく書いてください。
文字列の比較をするプログラムをC言語で作っています。
エラーがcharの初期設定で出ていると思いますが、よくわかりません。
初期化はmemsetを使っています。
P2.c:13:15:エラー:バイナリ式に対する無効なオペランド( 'char [3]'および
'char [11]')
scanf( "%c"&a);
~~~~ ^〜
このエラー文が全くわかりません。
複数の文字を入れたいので%sではいけないんですか?
発生している問題・エラーメッセージ
P2.c:5:5: warning: implicitly declaring library function 'memset' with type 'void *(void *, int, unsigned long)' [-Wimplicit-function-declaration] memset(a,'¥0', 11); ^ P2.c:5:5: note: include the header <string.h> or explicitly provide a declaration for 'memset' P2.c:5:14: error: character too large for enclosing character literal type memset(a,'¥0', 11); ^ P2.c:5:14: warning: multi-character character constant [-Wmultichar] P2.c:8:14: error: character too large for enclosing character literal type memset(b,'¥0', 11); ^ P2.c:8:14: warning: multi-character character constant [-Wmultichar] P2.c:12:15: error: invalid operands to binary expression ('char [3]' and 'char [11]') scanf("%s"&a); ~~~~^~ P2.c:14:15: error: invalid operands to binary expression ('char [3]' and 'char [11]') scanf("%s"&b); ~~~~^~ P2.c:16:5: warning: implicitly declaring library function 'strcmp' with type 'int (const char *, const char *)' [-Wimplicit-function-declaration] strcmp(a,b); ^ P2.c:16:5: note: include the header <string.h> or explicitly provide a declaration for 'strcmp' P2.c:17:9: error: array type 'char [11]' is not assignable if(a=b) ~^ 4 warnings and 5 errors generated. moridaiakira-no-MacBook-Air:desktop Taisei$ gcc -o program P2.c P2.c:4:10: error: definition of variable with array type needs an explicit size or an initializer char a[]; ^ P2.c:5:5: warning: implicitly declaring library function 'memset' with type 'void *(void *, int, unsigned long)' [-Wimplicit-function-declaration] memset(a,'¥0', 11); ^ P2.c:5:5: note: include the header <string.h> or explicitly provide a declaration for 'memset' P2.c:5:14: error: character too large for enclosing character literal type memset(a,'¥0', 11); ^ P2.c:5:14: warning: multi-character character constant [-Wmultichar] P2.c:7:10: error: definition of variable with array type needs an explicit size or an initializer char b[]; ^ P2.c:8:14: error: character too large for enclosing character literal type memset(b,'¥0', 11); ^ P2.c:8:14: warning: multi-character character constant [-Wmultichar] P2.c:16:5: warning: implicitly declaring library function 'strcmp' with type 'int (const char *, const char *)' [-Wimplicit-function-declaration] strcmp(a,b); ^ P2.c:16:5: note: include the header <string.h> or explicitly provide a declaration for 'strcmp' 4 warnings and 4 errors generated.
該当のソースコード
C言語
1#include<stdio.h> 2int main(void) 3{ 4 char a[]; 5 memset(a,'¥0', 11); 6 7 char b[]; 8 memset(b,'¥0', 11); 9 10 printf("2つの文字列を入力してください。"); 11 printf("文字列1:"); 12 scanf("%s"&a); 13 printf("文字列2:"); 14 scanf("%s"&b); 15 16 strcmp(a,b); 17 if(a=b) 18 { 19 printf("結果:2つの文字は一致します。(%s,%s)",a,b); 20 } 21 else 22 { 23 printf("結果:2つの文字は一致しません.(%s,%s)",a,b); 24 } 25 26 27 28}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
質問がかかれていません。
あなたがエラーメッセージをよくわからないことはわかりましたがあなたが聞きたい質問を提示してください。
> よくわかりません
一つ一つのエラーメッセージがそれぞれ何を言っているのかをお調べの上, 一つ一つ対処してください.
関係無い複数個所のエラーメッセージが一緒に出ていたり, 一つのエラーの所為で他でもエラーになっている等がありますので, 解きほぐす必要があります.
すいません。
P2.c:5:10:エラー:配列型の変数の定義には明示的なサイズが必要です
または初期化子
char a [];
^
P2.c:6:14:エラー:文字が文字リテラルタイプを囲むには大きすぎます
memset(a、 '¥0'、11);
^
初期化が必要との事でしたがmemsetで設定ができているのではないのですか?

回答4件
あなたの回答
tips
プレビュー