C - 使用sprintf

时间:2011-11-22 18:22:08

标签: c printf

下面是一个相当简单的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;
}

2 个答案:

答案 0 :(得分:3)

您的代码不会检查错误情况,这一点很重要。 (你怎么知道文件是否正确打开了?)

但真正的问题是,您使用sprintf而不是printf来输出字符串。 sprintf会将您的输出放入C字符串(这就是s的含义)。 printf会将输出打印到屏幕上。

答案 1 :(得分:2)

使用printf代替sprintf

printf在屏幕上打印一些东西,而sprintf用一些东西填充一个字符数组(即本质上是一个字符串)。

注意,虽然sprintf接受它应写入的char数组作为第一个参数,printf not 需要第一个参数,因为它将它输出到屏幕上。