[英]Printf() function acting strange
抱歉,如果这个问题很愚蠢,我是编码新手,尤其是在C ++中。 我试图读取以空格分隔的文本中的数据点,然后使用printf函数将其输出到控制台。 当我尝试这个
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main() {
double x[1000];
int i = 0;
int j;
double y[1000];
double sigmay[1000];
ifstream dataFile("xys_test.txt");
if (dataFile.is_open()) {
while (!dataFile.eof())
dataFile >> x[i] >> y[i] >> sigmay[i];
printf("x = %5.2f, y = %5.2f, sigmay = %5.2f\n", x[i], y[i], sigmay[i]);
i++;
}
}
当我希望所有这些点都将输出到控制台中时,控制台输出给我的是最后一个数据点。 我该如何解决?
您缺少while
块内容的一对{ ... }
。 当前,只有dataFile >> x[i] >> y[i] >> sigmay[i];
行在while
块内。
if (dataFile.is_open()) {
while (!dataFile.eof()) {
dataFile >> x[i] >> y[i] >> sigmay[i];
printf("x = %5.2f, y = %5.2f, sigmay = %5.2f\n", x[i], y[i], sigmay[i]);
i++;
}
}
你失去了花括号,
while (!dataFile.eof()) {
dataFile >> x[i] >> y[i] >> sigmay[i];
printf("x = %5.2f, y = %5.2f, sigmay = %5.2f\n", x[i], y[i], sigmay[i]);
i++;
}
代码应为:
while ( i < 1000 && (dataFile >> x[i] >> y[i] >> sigmay[i]) )
{
printf("x = %5.2f, y = %5.2f, sigmay = %5.2f\n", x[i], y[i], sigmay[i]);
++i;
}
您应该测试读取操作是否成功,以便决定是否继续打印和提交数据。 测试eof无关紧要并且是错误的。
同样, #include <cstdio>
也应用于printf
。 可能是您的编译器/库设置涉及iostream包含cstdio,但通常情况并非如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.