下面是一个相当简单的C程序,用于打开文本文件(input.txt),读取前四行,将它们提交到数组,然后打印数组中的第一项(即文本文件中的第一项) )
问题是,它什么都不打印。没有编译错误,程序只退出而没有任何输出。我哪里错了?
#include <stdio.h>
int main()
{
FILE * custom_calib = fopen("input.txt", "r");
float custom_calib_contents[4];
int i;
for(i = 0; i < 4; i++)
{
fscanf(custom_calib, "%f", &custom_calib_contents[i]);
}
double X_scale = custom_calib_contents[0];
double X_intercept = custom_calib_contents[1];
double Y_scale = custom_calib_contents[2];
double Y_intercept = custom_calib_contents[3];
char word [80];
sprintf(word, "%f", X_scale);
return 0;
}
答案 0 :(得分:3)
您的代码不会检查错误情况,这一点很重要。 (你怎么知道文件是否正确打开了?)
但真正的问题是,您使用sprintf
而不是printf
来输出字符串。 sprintf
会将您的输出放入C字符串(这就是s
的含义)。 printf
会将输出打印到屏幕上。
答案 1 :(得分:2)
使用printf
代替sprintf
。
printf
在屏幕上打印一些东西,而sprintf
用一些东西填充一个字符数组(即本质上是一个字符串)。
注意,虽然sprintf
接受它应写入的char数组作为第一个参数,printf
not 需要第一个参数,因为它将它输出到屏幕上。