C - используя sprintf - PullRequest
       1

C - используя sprintf

0 голосов
/ 22 ноября 2011

Ниже приведена довольно простая программа на 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 ]

3 голосов
/ 22 ноября 2011

Ваш код не проверяет наличие ошибок, что всегда важно.(Откуда вы знаете, что файл был правильно открыт в противном случае?)

Однако реальная проблема заключается в том, что вы использовали sprintf вместо printf для вывода строки.sprintf поместит ваш вывод в C-строку (это то, что означает s).printf выведет вывод на экран.

2 голосов
/ 22 ноября 2011

используйте printf вместо sprintf.

printf печатает что-то на экране, в то время как sprintf заполняет массив символов (то есть, по сути, строку) чем-то.

Обратите внимание, что в то время как sprintf принимает в качестве первого аргумента массив символов, в который он должен записать, printf делает не требует этот первый аргумент, поскольку выводит его на экран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...