|
|
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Есть текстовый файл. Структура строк: Фамилия (30 знаков), год (5) ... в общем длина строки равна 45 знаков. Надо выделить из каждой строки фамилию и занести в поле структуры. Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Так вот, допустим первая строка Иванов.... Вторая - Петров.... В дебюгере вижу при i=0 - Иванов i=1 - какая-то ерунда вроде как пустые значения i=2 Петров i=3 - опять ерунда Наверное неправильно определяется конец строки? Или надо как указывать его? Что-то я слышал что надо вводить некие символы "\0", зачем? Или это не то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:05 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
А вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:18 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Да и еще одно... В сухом остатке: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:26 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Со 128 - все нормально. Че ж такое? Да и еще одна проблема. Пытаюсь сразу за блоком while вывести значения: Код: plaintext 1. А выводятся пустые строки. Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:27 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:30 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Анатолий// необходимо еще где-то терминатор хранить [30] = '\0'; Да, да, я вот слышал про это. А зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:30 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Блин, вот с j лоханулся. Аж стыдно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:32 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
автор // необходимо еще где-то терминатор хранить [30] = '\0'; Да, да, я вот слышал про это. А зачем? Все строки C должны заканчиваться терминатором '\0' - это является признаком конца С-строки. Например, при выводе с помощью printf(%s, str) строки str именно '\0' говорит printf, что строка закончилась. Понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:39 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Анатолий, спасибо огромное. Насчет '\0' все понятно. Я не понял только почему 128 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:58 |
|
||
|
Вопрос по fgets()
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Вообще, здесь может быть любое число заведомо большее, чем длина самой длинной строки файла, потому что, исходя из документации на fgets(char*buf, int n, FILE *f), fgets читает в буфер buf до тех пора, пока либо: a) не встретился перевод строки б) не встретился конец файла в) не прочитал n-1 символ У вас длина строки без перевода строки 45, чтобы прочитать строку челиком Вам надо было передавать 46, а Вы передавали 45 - в результате у Вас считывалось 44 символа и 1 оставался не прочитанным (см. п. в)) - это как раз Вы и обрисовали в своем первом посте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 15:06 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=425&tid=2034111]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 319ms |

| 0 / 0 |
