Читаю из файла, scanf, число с лидирующим нулем - C (СИ)

Узнай цену своей работы

Формулировка задачи:

На VS 2010
#include<stdio.h>
void main()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    
        long n;
    
        scanf("%li", &n);
        printf("%li", n);
}
Если число в файле input.txt c нулем в начале (например "010123"), то в n сохраняется совсем другое число(а не "10123"). Как решить эту проблему? Пока получилось только через считывание строки, а затем преобразование в число, можно ли без таких лишних телодвижений ?

Решение задачи: «Читаю из файла, scanf, число с лидирующим нулем»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    FILE* in = fopen("in.txt", "r");
    FILE* out = fopen("out.txt", "w");
 
    long n;
 
    while(1)
    {
    fscanf(in, "%ld", &n);
    
    if(feof(in))
        break;
    fprintf(out, "%ld ", n);
    }
    
    fclose(in);
    fclose(out);
 
    exit(0);
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек
  2. Открытие файлов in.txt и out.txt для чтения и записи соответственно
  3. Объявление переменной типа long для хранения числа
  4. Бесконечный цикл чтения чисел из файла in.txt
  5. Проверка на достижение конца файла с помощью функции feof
  6. Запись числа в файл out.txt
  7. Закрытие файлов in.txt и out.txt
  8. Выход из программы с помощью функции exit

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.2 из 5
Похожие ответы