dipankarnalui Ответов: 2

Как разделить предложение пробелом в C?


Введите предложение. Разделите предложение на слова. Я хочу хранить слова в массиве. Печать массива слов.

Пример:

Предложение = изучение программы на языке Си

выход=
array[0]=обучение
массив [1]=C
array[2]=Программа.

Пожалуйста, помогите мне.

Что я уже пробовал:

#include <stdio.h>
#include <string.h>

int main ()
{
	char str[] ="";
	printf("\nEnter sentence = ");
	scanf("%s",&str);
    char * pch;
   	pch = strtok (str," ,.-");
 	while (pch != NULL)
  	{
    	printf ("%s\n",pch);
    	pch = strtok (NULL, " ,.-");
 	 }
  return 0;
}

Afzaal Ahmad Zeeshan

Вам нужно будет создать буферы символов, а затем прочитать основной массив для создания подстрок. Это программирование на языке Си, и не ожидайте, что все будет так просто, как на других языках. :Д

2 Ответов

Рейтинг:
4

CPallini

Цитата:
char str[] ="";
Вы выделяете массив из 1 символа. Слишком мало для получения предложения от пользователя.



Цитата:
scanf ("%s",& str);
К сожалению первый пробел в предложении останавливается scanf дальнейшая обработка, в то время как вам нужно получить целую строку от пользователя.

Попробуйте, например:
 #include <stdio.h>
 #include <string.h>


int main ()
{
  char str[0x100];
  printf("\nEnter sentence = ");
  fgets(str, sizeof(str), stdin);
  char * pch;
  pch = strtok (str," ,.-");
  while (pch != NULL)
    {
      printf ("%s\n",pch);
      pch = strtok (NULL, " ,.-");
   }
  return 0;
}


Рейтинг:
0

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!