首先,程序要您输入学生姓名。当我想用 %s
在底部显示学生的名字时,xcode 总是告诉我用 %c
替换。你能告诉我如何在输入时显示学生姓名而不是使用 %c
的解决方案吗?谢谢。
#include <stdio.h>
void showthelastvalue () {
char name1, name2, name3, name4;
int value1a, value1b, value1c, value1d;
int value2a, value2b, value2c, value2d;
int value3a, value3b, value3c, value3d;
int value4a, value4b, value4c, value4d;
printf("\nenter student name-1 : ");
scanf(" %s", name1);
printf("enter student name-2 : ");
scanf(" %s", name2);
printf("enter student name-3 : ");
scanf(" %s", name3);
printf("enter student name-4 : ");
scanf(" %s", name4);
printf("\nEnter student grade-1 %s\n", name1);
printf("grade ke 1 : ");
scanf("%d", &grade1a);
printf("grade ke 2 : ");
scanf("%d", &grade1b);
printf("grade ke 3 : ");
scanf("%d", &grade1c);
printf("grade ke 4 : ");
scanf("%d", &grade1d);
printf("\nEnter student grade- 2 %s\n", name2);
printf("grade ke 1 : ");
scanf("%d", &grade2a);
printf("grade ke 2 : ");
scanf("%d", &grade2b);
printf("grade ke 3 : ");
scanf("%d", &grade2c);
printf("grade ke 4 : ");
scanf("%d", &grade2d);
printf("\nEnter student grade- 3 %s\n", name3);
printf("grade ke 1 : ");
scanf("%d", &grade3a);
printf("grade ke 2 : ");
scanf("%d", &grade3b);
printf("grade ke 3 : ");
scanf("%d", &grade3c);
printf("grade ke 4 : ");
scanf("%d", &grade3d);
printf("\nEnter student grade- 4 %s\n", name4);
printf("grade ke 1 : ");
scanf("%d", &grade4a);
printf("grade ke 2 : ");
scanf("%d", &grade4b);
printf("grade ke 3 : ");
scanf("%d", &grade4c);
printf("grade ke 4 : ");
scanf("%d", &grade4d);
printf("\nThe grade of 4 students: \n");
printf(" %s %d %d %d %d\n", name1, grade1a, grade1b, grade1c, grade1d);
printf(" %s %d %d %d %d\n", name2, grade1a, grade1b, grade1c, grade1d);
printf(" %s %d %d %d %d\n", name3, grade1a, grade1b, grade1c, grade1d);
printf(" %s %d %d %d %d\n", name4, grade1a, grade1b, grade1c, grade1d);
averange1 = (grade1a + grade1b + grade1c + grade1d) / 4;
averange2 = (grade2a + grade2b + grade2c + grade2d) / 4;
averange3 = (grade3a + grade3b + grade3c + grade3d) / 4;
averange4 = (grade4a + grade4b + grade4c + grade4d) / 4;
printf("Last grade of 4 studentsgra :\n");
printf("Last grade from student1 %s = %d\n", name1, averange1);
printf("Last grade from student2 %s = %d\n", name2, averange2);
printf("Last grade from student3 %s = %d\n", name3, averange3);
printf("Last grade from student4 %s = %d\n", name4, averange4);
}
int main() {
int choose;
printf("Welcome!\n");
do {
printf("Choose anda :\n");
printf("1. Show the last grade\n");
printf("2. Show the grade\n");
printf("3. Show the Table\n");
printf("4. Exit\n");
printf("\nWhat will you choose ? ");
scanf("%d", &choose);
switch (choose) {
case 1:
showthelastgrade ();
break;
case 4:
printf("Thank you /001\n");
break;
}
}
while (choose != 5);
return 0;
}
最佳答案
您正在将名称读取到单个 char
中,这就是 xcode 向您提供该消息的原因。您需要使用一个 char
数组。
最简单的方法是将您的声明更改为:
char name1[N], name2[N], name3[N], name4[N];
其中 N
是名称的最大长度。
然后您可以将所有 scanf
更改为:
scanf(" %s", name1); // & removed
作为 name1
等现在指向 char
数组的开始。
请注意,这本质上是一件冒险的事情,因为这意味着输入太长的名称可能会溢出缓冲区。
你最好使用 fgets
,因为它允许你指定缓冲区的最大长度:
fgets(name1, N, stdin);
任何超过 N-1
个字符的内容都将被丢弃,而不是溢出您的缓冲区。
关于c - 如何在字符中显示一个词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375885/