разделить строку на слова си
Слова разделяются одним или несколькими пробелами и знаками пунктуации (“,”, “;”, “:”, “-”, “.”, “!”, “?”). scanf, sscanf или strtok нельзя. Каким образом это можно сделать?
Ответы (1 шт):
Автор решения: Namous
→ Ссылка
#include <stdio.h>
int main()
{
char c;
char str[80][20]; //допустим, предложение из 80 слов, а слово максимум состоит из 20 букв
int i = 0, j = 0, num_nw = 0, word = 0;
while((c = getchar()) != '\n')//пока строка не кончилась, считываем каждый символ
{
if(c == ' ' || c == ',' || c == ';' || c == ':' || c == '-' || c == '.' || c == '!' || c == '?')//если встречены разделители
{
if(num_nw == 0 && word > 0)
{
str[i][j] = '\0';//обозначаем конец слова
str[i++][j];//теперь мы хотим записывать новое слово
j = 0;//и желательно в начало выделенной памяти под слово
}
num_nw++;//это разделитель, прибавляем 1
}
else
{
str[i][j++] = c; //записываем слово
num_nw = 0;//теперь это не разделитель, их число приравниваем нулю
word++;//прибавляем 1 к числу слов
}
}
str[i][j] = '\0';//обозначаем конец слова
return 0;
}