#include <stdio.h>
#define MAX_SIZE 20
int main()
{
int age;
char name[MAX_SIZE];
float wage;
printf("input name, age and wage: ");
scanf("%s %s %s", name, &age, &wage); //LINE 10
}
コンパイルしようとした後:
lab4q5.c: In function 'main':
lab4q5.c:10: warning: format '%s' expects type 'char *', but argument 3 has type 'int*'
lab4q5.c:10: warning: format '%s' expects type 'char *', but argument 4 has type 'float *'
lab4q5.c:16: warning: control reaches end of non-void function
私は C プログラミングが初めてで、自分のラボの 1 つの文字列としてfloat
andをスキャンしたいと考えています。int
に変更できることはわかっ%s %s
て%f %d
おり、正常にコンパイルされるはずですが、 としてスキャンするように求められてい%s
ます。
ループを使用して、(標準入力から) 入力を読み取ります。1 行に 1 つの入力で、ユーザー情報について名前 age 賃金の形式で読み取ります。ここで、年齢は整数リテラルで、賃金は最大 2 つの 10 進数の浮動小数点リテラルです。• scanf(“%s %s %s”, 名前, 年齢, 賃金) を使用して、3 つの入力「文字列」を読み取ります。
したがって、コメントを読んだ後、それらを文字列としてフォーマットし、後で int および float として操作することを心配することにしました。これは私がこれまでに持っているものです:
#include <stdio.h>
#define MAX_SIZE 20
#define MAX_AGE 3
int isXX(char name[])
{
if (name[0] == 'X' && name[1] == 'X' && name[2] == '\0')
return 0; //return return false to quit
else
return 1; //return true
}
int main()
{
char age[MAX_AGE];
char wage[MAX_SIZE];
char name[MAX_SIZE];
printf("input name, age and wage: ");//enter name as XX to quit
scanf("%s %s %s", name, age, wage);
while(isXX(name[])) // //LINE 22
{
printf("input name, age and wage: ");//enter name as XX to quit
scanf("%s %s %s", name, age, wage);
}
return 0;
}
なぜコンパイラでこのエラーが発生するのかわかりませんが、私は
lab4q5.c: In function âmainâ:
lab4q5.c:22: error: expected expression before â]â token