Как читать и распечатывать все различные типы данных вместе из файла в C программировании - PullRequest
2 голосов
/ 30 марта 2020

Мой код указан ниже. Если запустить этот код, то даже если текстовый файл будет создан правильно, по какой-то причине значения нежелательной почты будут напечатаны в консоли. Когда я включаю строку, тогда только строка корректно читается и печатается в окне консоли, и я получаю ненужное значение для остальных переменных, но когда я полностью удаляю строку, я получаю правильные значения для остальных переменных. Почему возникает эта проблема и как ее исправить?

Это код:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char str[] = "a string";
    char str2[50];
    char ch ='a';
    char ch1;
    int num = 12;
    int num1;
    float deci = 51.15;
    float deci1;
    FILE *new;

    new = fopen("a.txt","w");
    if (new == NULL) {
        printf("Error! file not found! \n");
    }
    fprintf(new, "%s\n", str);
    fprintf(new, "%c\n", ch);
    fprintf(new, "%d\n", num);
    fprintf(new, "%.2f\n", deci);

    fclose(new);

    new = fopen("a.txt", "r");
    if (new == NULL) {
        printf("Error! file not found!  \n");
    }

    fscanf(new, "%[^\n]s", str2);
    //str2[7]='\0';

    fflush(stdin);
    fscanf(new, "%c", &ch1);
    fscanf(new, "%d", &num1);
    fscanf(new, "%f", &deci1);

    //fclose(new);

    printf("string: %s character: %c integer: %d float: %f", str2, ch1, num1, deci1);
    //enter code here
    fclose(new);
}

1 Ответ

0 голосов
/ 30 марта 2020

Если я не ошибаюсь, ошибка здесь:

fscanf(new, "%[^\n]s", str2); 

Попробуйте изменить его на:

fscanf(new, "%[^\n]\n", str2);

Это работает для меня.

...