【发布时间】:2019-09-11 02:48:51
【问题描述】:
我的程序应该打印我输入的内容 带有scanf的字母并在打印后将它们保存在变量中 什么是 在他们里面。这是一个循环,因此它可以打印每一行。不过好像 要么扫描最后一行两次,要么打印两次
我尝试将 \n 放在解决打印问题的扫描中,但是 现在它不会打印每行的第一个字母
#include <math.h>
#include <stdio.h>
int main()
{
double tempG = 0;
double altG = 0;
double humG = 0;
char cultivo[100] = " ";
char nombre[100] = " ";
double temp = 0;
double alt = 0;
double hum = 0;
char insertado;
int contador = 0;
scanf("%lf %lf %lf" , &tempG, &altG, & humG);
printf("%2.0lf %2.0lf %2.0lf \n \n", tempG, altG, humG);
char temporal[100] = "";
while(scanf("%c", &insertado) != EOF){
scanf("%s %lf %lf %lf", nombre, &temp, &alt, &hum);
printf("%s %.0lf %.0lf %.0lf \n", nombre, temp, alt, hum);
}
return 0;
}
这是我的输入和我的预期输出:
25 65 1200 Banano 27 50 1000 Brocoli 16 75 2500 Fresas 18 80 2000 Zanahoria 21 75 1200 Tomate 22 75 1000
这是我的实际输出:
25 65 1200 Banano 27 50 1000 Brocoli 16 75 2500 Fresas 18 80 2000 Zanahoria 21 75 1200 Tomate 22 75 1000 Tomate 22 75 1000
【问题讨论】:
-
我做了,但它仍然无法工作,仍然打印两次
-
如果我在最后一个 %lf 之后的 scanf 中放了一个空格,它会停止打印最后一个两次,但它会停止打印每个字母的第一个字母
-
在尝试使用它设置的值之前,您应该始终检查每个
scanf()调用的返回值是否成功。 -
C 语言中的一种新东西,所以我不确定你的意思,但我实际上打印了它们,看看它是否按照它应该的方式扫描所有内容,但它似乎没有这样做
-
使用
fgets()或POSIXgetline()读取行,然后使用sscanf()解析数据。它通常效果更好——尤其是对你更有效。