|
fprintf, лыжи или... |
|
|
|
Nov 20 2011, 21:02
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
есть текстовый файл, там что-то типа такого Код 12-раз-,22+два,здрасте-я-тетя делаю Код char raz[20],dva[20,tri[20];
fscanf(file, "%s,%s,%s", raz, dva, tri); в результате уже raz содержит Код 12-раз-, или я неправильно все понял, или какого там запятая делает?
|
|
|
|
|
 |
Ответов
(1 - 12)
|
Nov 21 2011, 08:20
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Alex11 @ Nov 21 2011, 02:27)  Если нарисуете, что хотите получить на выходе, и что точно на входе, то можно попытаться написать правильный типа формат. входную строку я указал - буквы/символы/цифры (кроме запятых), разделенные запятыми на выходе - получить то, что между запятыми, в соответствующие массивы, указанные в качестве параметров я могу это все сделать руками, но потянуло на халявку
|
|
|
|
|
Nov 21 2011, 10:01
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Палыч @ Nov 21 2011, 13:30)  Как уже было сказано выше Alex11: %s вводит символы до первого "пробельного". Поэтому, таким способом Вам строку на части не разделить. Можно ввести всю строку целиком (с помощью fgets, например), а затем разделить функцией strtok. Но, функция strtok - "ещё та штучка"... да, в принципе, не лень мне три раза сваять что-то типа Код memset(raz, '\0', RAZ_SIZE); memset(dva, '\0', DVA_SIZE); memset(tri, '\0', TRI_SIZE);
while (*string && *string!=',') *raz++ = *string++; string++; while (*string && *string!=',') *dva++ = *string++; string++; while (*string) *tri++ = *string++;
|
|
|
|
|
Nov 21 2011, 10:20
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата Но, функция strtok - "ещё та штучка"... А что не так с strtok ? Я файл читаю построчно и "парсю" strtok'ом. сточки типа 30|10|0.005|0.005|0.100|0.001|0.01|5|3|7|6|3|0 глотает с радостью.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Nov 21 2011, 22:59
|
Гуру
     
Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965

|
Думаю я, что следующая спецификация Вам поможет: Код fscanf(file, "%[^,],%[^,],%[^,]", raz, dva, tri); или fscanf(file, "%[^,\0],%[^,\0],%[^,\0]", raz, dva, tri); - если будут проблемы с концом строки. Возможны еще варианты в зависимости от того, что на конце строки при вводе и что нужно получить в этом случае.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|