Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Считать данные из файла


Автор: Veens 28.6.2007, 23:28
Только начал изучать С, поэтому задаю элементарный (наверное!?) вопрос. 
А именно: есть файл, созданный в блокноте Виндовса; файл содержит, например, такую строку символов (только из нулей и единиц):

1011001110101

Что нужно: прочитать первый символ из файла (это 1) и записать его в переменную X типа int  (X = 1). Далее выполняются с этой переменной различные действия (с этим я сам постараюсь справиться). Потом читаем следующий символ из файла (это 0) и записываем в X (X = 0) и так далее, пока не переберу все символы.

Вот как этот кусок программы написать на С.

Заранее благодарен!

Автор: Rockie 28.6.2007, 23:40
Veens, читай строку посимовльно, потом переводи в int.



Автор: Rockie 28.6.2007, 23:57
Код

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

int main()
{
   int number = 0;
   char letter = '\0';
   FILE* fp = fopen("text.txt","r");

   if(fp==NULL)                            // если файла нет
    { printf("Error, no file");
      return 0;
    }

   while(fscanf(fp,"%c",&letter)!=EOF)
   {
     printf("%d\n",letter-'0');
   }
    return 0;
}

Если нужно преобразование, то http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=Eu0&q=atoi+&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=.

example =)
Код

int result = (int)(letter-'0' + 50);
   printf("%d\n",result);

Автор: Dov 29.6.2007, 02:45
Цитата(Rockie @  28.6.2007,  23:40 Найти цитируемый пост)
Veens, читай строку посимовльно, потом переводи в int.

Это лишнее, по-моему. Можно сразу так делать:
Код

while(fscanf(fp,"%d",&number)!=EOF)
{
     printf("%d\n",number);
}


Автор: Veens 29.6.2007, 08:01
Всем откликнувшимся спасибо за помощь.
Пойду пробовать!

Автор: Rockie 29.6.2007, 09:55
Dov, я так понял что из этой строки 
Цитата
1011001110101

нужно получить числа 1,0,1,1,0... А так ты считаешь число 1011001110101. 


Автор: Dov 29.6.2007, 10:42
А, точно. Извиняюсь. Rockie, ты прав.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)