为什么我的C代码不使用一个get()获取第一个输入
我创建了一个大小为n的结构&开始接受输入,但每次我运行它时,如果我只使用一个get(),它就不会接受输入作为名称。只有在print语句上方和下方使用两个get()时,此代码才有效为什么我的C代码不使用一个get()获取第一个输入,c,C,我创建了一个大小为n的结构&开始接受输入,但每次我运行它时,如果我只使用一个get(),它就不会接受输入作为名称。只有在print语句上方和下方使用两个get()时,此代码才有效 #include <stdio.h> struct Driver { char name[50]; char licence[50]; char route[50]; int kms[6]; };
#include <stdio.h>
struct Driver
{
char name[50];
char licence[50];
char route[50];
int kms[6];
};
int main()
{
int n, response;
printf("WELCOME TO MY DRIVING AGENCY\n");
printf("\nEnter the no. of data you want to enter - ");
scanf("%d", &n);
struct Driver a[n];
for(int i = 0; i < n; i++) // Take inputs
{
printf("\nEnter the information for Driver no.%d\n", i+1);
gets(a[i].name);
printf("Enter name - "); // WHY WHENEVER I REMOVE ANY OF THE get(a[i].name) IT WON'T TAKE INPUT FOR name
gets(a[i].name);
printf("Enter licence no. - ");
gets(a[i].licence);
printf("Enter final destination (route) - ");
gets(a[i].route);
printf("Enter distance travelled in kms (Enter no. only) - ");
scanf("%d", &a[i].kms);
}
return 0;
}
#包括
结构驱动程序
{
字符名[50];
煤焦许可证[50];
炭路线[50];
int-kms[6];
};
int main()
{
int n,响应;
printf(“欢迎来到我的驾驶公司”\n);
printf(“\n输入要输入的数据编号-”;
scanf(“%d”和“&n”);
结构驱动程序a[n];
for(int i=0;i
为什么此代码不能仅使用一个get(a[i].name)创建结构变量时出错。 您可以使用常量或动态变量创建定长数组。
我改变了你的代码如下。它工作得很好
#include <stdio.h>
#define n 5
struct Driver
{
char name[50];
char licence[50];
char route[50];
int kms[6];
};
int main()
{
int response;
printf("WELCOME TO MY DRIVING AGENCY\n");
printf("\nEnter the no. of data you want to enter - ");
//scanf("%d", &n);
Driver a[n];
for(int i = 0; i < n; i++) // Take inputs
{
printf("\nEnter the information for Driver no.%d\n", i+1);
gets(a[i].name);
printf("Enter name - "); // WHY WHENEVER I REMOVE ANY OF THE get(a[i].name) IT WON'T TAKE INPUT FOR name
gets(a[i].name);
printf("Enter licence no. - ");
gets(a[i].licence);
printf("Enter final destination (route) - ");
gets(a[i].route);
printf("Enter distance travelled in kms (Enter no. only) - ");
scanf("%d", &a[i].kms);
}
return 0;
#包括
#定义n5
结构驱动程序
{
字符名[50];
煤焦许可证[50];
炭路线[50];
int-kms[6];
};
int main()
{
int响应;
printf(“欢迎来到我的驾驶公司”\n);
printf(“\n输入要输入的数据编号-”;
//scanf(“%d”和“&n”);
司机a[n];
for(int i=0;i
在这段代码中,scanf()操作正确
谢谢。不要使用gets-never&ever,请阅读以下内容:解决方案:使用
fgets()
读取每个输入,并使用sscanf()
或strtol()
或atoi()
提取一个整数。但也请注意,您可以使用'fgets'函数。例如:fgets(字符串名称、字符串长度、stdin);@WeatherVane“并用strtol提取一个整数。”只有strtol。不是atoi,也不是sscanf。@zwol它们是不推荐的吗?