Читаю из файла, scanf, число с лидирующим нулем - C (СИ)
Формулировка задачи:
На VS 2010
Если число в файле input.txt c нулем в начале (например "010123"), то в n сохраняется совсем другое число(а не "10123"). Как решить эту проблему? Пока получилось только через считывание строки, а затем преобразование в число, можно ли без таких лишних телодвижений ?
#include<stdio.h>
void main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
long n;
scanf("%li", &n);
printf("%li", n);
}Решение задачи: «Читаю из файла, 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);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Открытие файлов in.txt и out.txt для чтения и записи соответственно
- Объявление переменной типа long для хранения числа
- Бесконечный цикл чтения чисел из файла in.txt
- Проверка на достижение конца файла с помощью функции feof
- Запись числа в файл out.txt
- Закрытие файлов in.txt и out.txt
- Выход из программы с помощью функции exit