gpt4 book ai didi

C: Scanf 字符串,字段跳过器 "%*"应用于 while 循环中的转换说明符

转载 作者:行者123 更新时间:2023-11-30 18:15:47 25 4
gpt4 key购买 nike

我定义了一个结构

typedef struct EMP {
char name[100];
int id;
float salary;
} EMP;

我在 while 循环中使用它进行输入

EMP emprecs[3];
int i;

i = 0;
while (i < 3) {
printf("\nEnter Name: ");
scanf("%*[\n\t ]%[^\n]s", emprecs[i].name);
printf("\Enter Id: ");
scanf("%d", &emprecs[i].id);
printf("\nEnter Salary: ");
scanf("%f", &emprecs[i].salary);
i++;
}

但循环仅采用名字并跳过此后的所有其他输入(它完成,但输入为空)。这个例子来自C课本,那么问题出在哪里呢?

如果没有"%*[\n\t ]"字段跳过,它的效果会更好一些,但教科书告诉你要使用它。

最佳答案

试试这个

scanf(" %*[\n\t ]%[^\n]s", emprecs[i].name);
^^^
White space

而不是

scanf("%*[\n\t ]%[^\n]s", emprecs[i].name);

另外,

scanf(" %d", &emprecs[i].id);

scanf(" %f", &emprecs[i].salary);

关于C: Scanf 字符串,字段跳过器 "%*"应用于 while 循环中的转换说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410459/

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