|
|
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
Есть такой код. Считываю из файла значения, перевожу их в long и далее надо с ними манипулировать. Но что то происходит не так. Пытаюсь вывести считываеимые значения и получаю странные числа. Подскажите плиз в чем дело? while (fgets(buf,10,fin)!=NULL) { nls=atol(buf); fprintf(fout,"%9lu\n",nls); fprintf(fout,"%s\n",buf); } Вот часть данных из считываемого файла 167 2174 23732 24445 99520 102079 Вот что на них выводится. 167 167 0 2174 2174 0 23732 23732 0 24445 24445 0 4294935744 99520 0 4294938303 102079 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 08:54 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
эх, тяжко без Си под рукой что-либо тут говорить... но я вот в толк взять никак не могу зачем тебя последний fprintf нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:22 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
В приведенном коде все в порядке. Следовательно, ошибочный код где-то выше. Надеюсь, что переменная buf определена образом: Код: plaintext а НЕ char* buf; ну, и еще возможно дело в том, как ты открываешь in/out файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:31 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
FILE *fout1; FILE *fin; пробовал и так char *buf; и так char buf[10]; результат один. Открытие файлов. if ((fout1=fopen("doSpPorv.txt","wt")) != NULL); else{ printf("\nОшибка пpи откpытии файла doSpProv.txt\n"); return(0); } if ((fin=fopen("a.txt","rt")) != NULL); else{ printf("\nОшибка пpи откpытии файла a.txt\n"); return(0); } Два fprintf для проверки. Т.е. buf вроде верно выходит, а nls как то не так начиная вот с этих данных 4294935744 nls 99520 buf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:44 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
Чего-то ты недоговариваешь :) код с виду рабочий. А требование насчет "только C" жесткое? Может лучше С++ и потоки? Удобней гораздо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ReadIFS 167 167 2174 2174 23732 23732 24445 24445 99520 99520 102079 102079 ReadIFS 167 2174 23732 24445 99520 102079 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:53 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
Надо имеено на С, вот полный код, его надо будет в другую старую прогу встроить, поэтому и С. автор#include <share.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <cscape.h> #include <popdecl.h> #include <pmenu.h> #include <scancode.h> #include <vista.h> #include "tigr.h" #include <xdate.h> main() { unsigned long nls; FILE *fout1; FILE *fin; char buf[10]; //char *buf; if ((fout1=fopen("doSpPorv.txt","wt")) != NULL); else{ printf("\nОшибка пpи откpытии файла doSpProv.txt\n"); return(0); } if ((fin=fopen("a.txt","rt")) != NULL); else{ printf("\na.txt\n"); return(0); } while (fgets(buf,10,fin)!=NULL) { nls=atol(buf); fprintf(fout1,"%9lu\n",nls); fprintf(fout1,"%s\n",buf); } // while fclose(fout1); fclose(fin); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:03 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
Могу a.txt скинуть кто у себя хочет проверить его работоспособность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:05 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
посмотри что возвращает функция atol, может не unsigned long? и точки запятой в строчках с if убери :)) да и заголовочных файлов что-то много у тебя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:46 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
упс, про точки с запятой я погоричился, виноват... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:50 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
А как мне посмотреть что она возвращает? Заголовочные файлы позже будут нужны для обработки этих данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 12:07 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
В тексте программу у тебя все правильно. У тебя не правильно в скрипте сборки. Ты подключаешь 16-и битную арифметическую библиотеку вместо 32-х битной. При этом исходный текст своей программы компилируешь в 32-х битном режиме. Иди в свой makefile или в свойства проекта если ты IDE пользуешься и укажи использовать large модель памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:05 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
optimizmА как мне посмотреть что она возвращает? Заголовочные файлы позже будут нужны для обработки этих данных. я ответил на другом форуме. Но и тут уже прозвучало - проблема не в коде, хотя кривоватость есть... см. тут.. http://]www.relib.com/forums/topic.asp?id=877434 с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 13:48 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
1a. buf должен иметь размер не менее 12 байт 1b. fgets(buf,11,stdin); 2. unsigned long nls; P.S. А почему 1a & 1b, думаю, что Вы должны подумать сами, если не догадаетесь объясню... _USER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2005, 01:43 |
|
||
|
Считывание чисел из файла в Си
|
|||
|---|---|---|---|
|
#18+
Есть предложение использовать fscanf. чето типа такого буит int number; fscanf(file,"%i\n", &number); никаких преобразований не нужно. а вообще числа лучше хранить в бинарном файле, если конечно пользователю не важно как хранить числа в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=395&tid=2032888]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 428ms |

| 0 / 0 |
