Разбить строку на слова - Нулевая длина строки char* - C (СИ)
Формулировка задачи:
Добрый день! Пытаюсь в цикле считать из файла, содержащего такую строку "fga b qwee", так, чтобы разбить это все дело на три отдельных слова. Считываю посимвольно, отслеживаю конец файла, пробельные символы и знаки пунктуации. Если считанный символ таковым не является, то прибавляю его к переменной oneWord. Если встречается пробельный символ, то хочу обнулить переменную oneWord (то есть было равно "fga", а должно стать просто пусто: ""). Но не знаю, как это сделать корректно. Если оставить, как есть, то при считывании следующего слова, состоящего из 1 символа "b", программа выведет "bga", что и логично.Подскажите, пожалуйста, можно как-то одной строчкой сделать так, чтобы длина массива опять стала 0 ?
int index=0;
char ch=getc(f);
char *oneWord=(char*)malloc(15*sizeof(char*));
while(ch!=EOF){
while(!(isspace(ch)) && !(ispunct(ch))){
if(ch==EOF) break;
oneWord[index]+=ch;
index++;
ch=getc(f);
}
printf("%s\n",oneWord);
*oneWord=""; //Что тут должно быть?
ch=getc(f);
index=0;
}Решение задачи: «Разбить строку на слова - Нулевая длина строки char*»
textual
Листинг программы
printf("%s\n",oneWord);
oneWord=""; //Что тут должно быть?
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Выводится строка с помощью функции printf().
- Переменной
oneWordприсваивается пустая строка, т.е. `` (нулевая длина строки char* ). В данном коде нет действий с числами, поэтому список не превышает 20 элементов.