gpt4 book ai didi

C scanf() 不解析我的输入

转载 作者:行者123 更新时间:2023-11-30 20:52:08 25 4
gpt4 key购买 nike

我正在编写一个 C 程序,该程序的目标是我只想输入 4 个学生的详细信息和结构。但我的程序缺少一些东西,所以我的程序在输入第一个学生详细信息后退出。请看这里

# include <stdio.h>

struct student
{
int no;
char name[20];
float marks;
}s[10];

int main()
{
int i,n;


printf(" enter number of students ");
scanf("%d",&n);

printf(" enter student Number Name marks ");
for(i=0;i<n;i++)
{
scanf("%d%c%f",&s[i].no,&s[i].name,&s[i].marks);
}
return 0;
}

即使我选择的学生人数为 4,输入一名学生详细信息后程序也会退出。

我在这里给出的输入

[root@localhost raja]# gcc -o s s.c
[root@localhost raja]# ./s
enter number of students 4
enter student Number Name marks 1 as 12.03
[root@localhost raja]#

即使只输入了第一个学生的详细信息,它也会退出该计划。帮助我。

最佳答案

这是正确的代码

# include <stdio.h>

struct student
{
int no;
char name[20];
float marks;
}s[10];

int main()
{
int i,n;


printf(" enter number of students ");
scanf("%d",&n);

printf(" enter student Number Name marks ");
for(i=0;i<n;i++)
{
scanf("%d%20s%f",&s[i].no,s[i].name,&s[i].marks);
}
return 0;
}

第一个错误是 %c 应该是 %s,因为您需要的是字符串而不是字符。第二个是,当您期望 %s 时,您只需要传入变量名,因为它是一个数组,因此是一个指针。s 之前的 20 指定 name 变量的字符串允许的宽度。如果名称输入字符串的长度超过 20,则会扰乱其他变量的输入,并且程序将终止或出现意外行为。

关于C scanf() 不解析我的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com