我正在尝试扫描单行输入并将其存储在结构中。我不确定我是否存储错误或者我打错了。我不确定如何将scanf
与for
循环一起使用,因为我之前从未这样做过,更不用说C喜欢覆盖东西了。所以我不确定如何处理这个问题。
这是我放在一起的东西,但是当我打印时,我得到垃圾数字。我本打算使用指针,但我的教授不会让我们使用它。这就是我遇到麻烦的原因。
EDITED
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 3
#define MAXTRIP 6
struct stop
{
float cost;
float time;
};
struct trip
{
char Dest_letter;
int stop_num;
struct stop leg[MAX];
};
int main(void)
{
int trip_num, index, i;
struct trip travel[MAXTRIP];
printf("Enter number of trips: ");
scanf("%d", &trip_num);
printf("Please enter destination letter/number of stops and cost/length of each stop:\n");
for (index = 0; index < trip_num; index++)
{
scanf("%c %d", &travel[index].Dest_letter, &travel[index].stop_num);
for ( i=0; i < travel[index].stop_num; i++)
scanf("%f %f", &travel[index].leg[i].cost, &travel[index].leg[i].time);
}
for (index =0; index < trip_num; index++)
{
printf("Trip:%d \nDestination Letter:%c", index+1, travel[index].Dest_letter);
for (i=0; i < travel[index].stop_num; i++)
printf("Cost:%.2f \nLength:%.2f", travel[index].leg[i].cost, travel[index].leg[i].time);
}
}
答案 0 :(得分:3)
scanf()
用于获取运行时的值并在控制字符串中使用
main()
{
//this R.M.VIVEK coding for Scaning Multiple inputs from one line using scanf
int r,m,v1,i,v,e,k;
char a,b,c;
float x,y,z;
clrscr();
printf("enter the Your five subject marks");
//%d is integer format ,
scanf("%d%d%d%d%d",&r,&m,&v,&i,&e);
//%c is char format and %s is a sting formar
printf("enter the any character values");
scanf("%c%c%c",a,b,c);
//%f is float format
printf("enter the Your height and wight");
scanf("%f%f",&x,&y);
}
答案 1 :(得分:2)
你的阅读循环中有你的打印循环。在阅读第一个旅行信息后,它试图打印出所有旅行信息。
编辑:这里的问题是scanf
处理单个字符的方式在处理字符串和数字的方式旁边有点不直观。它从标准输入中读取下一个字符,这可能是您完成键入上一个输入时的换行符。然后它继续尝试读取一个整数,但它找到了你想要被%c
消费的字母。这会导致scanf
失败并且不会初始化stop_num
。
解决这个问题的一种方法可能是读取字符串。 scanf
将开始在第一个非空白字符处读取字符串,并在第一个空白字符处停止读取它。然后从你读取字符串的缓冲区中取出第一个字符。
#include <stdio.h>
#define MAX 3
#define MAXTRIP 6
struct stop {
float cost;
float time;
};
struct trip {
char Dest_letter;
int stop_num;
struct stop leg[MAX];
};
int main(void)
{
int trip_num, index, i;
struct trip travel[MAXTRIP];
char buffer[10];
printf("Enter number of trips: ");
scanf("%d", &trip_num);
for (index = 0; index < trip_num; index++) {
printf("Please enter destination letter/number of stops:\n");
scanf("%s %d", buffer, &travel[index].stop_num);
travel[index].Dest_letter = buffer[0];
for (i = 0; i < travel[index].stop_num; i++){
printf("Please enter cost/length of stop %d:\n", i);
scanf("%f %f", &travel[index].leg[i].cost, &travel[index].leg[i].time);
}
}
printf("%d trips\n", trip_num);
for (index = 0; index < trip_num; index++) {
printf("Trip:%d \nDestination Letter:%c\n", index + 1, travel[index].Dest_letter);
for (i = 0; i < travel[index].stop_num; i++)
printf("Cost:%.2f \nLength:%.2f\n", travel[index].leg[i].cost, travel[index].leg[i].time);
}
}