Разбить предложение на слова и занести каждое в массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В общем, трабл начинается на 3 слове, первые 2 записывает нормально, а на 3 слове аварийное завершение программы. Фрагмент кода:
char string[] = "I love you";
    char mass[3][10];
        for( i = 0, j = 0, k = 0; i < 3; i++, j++)
        {
            while( string[j] != ' ') {mass[i][k] = string[j]; k++; j++;}
            mass[i][k] ='\0';
            printf("%s\n", mass[i]);
            k = 0;
        }
Если ставлю после you пробел, то работает нормально.
Проблема решена. Дописал в условие проверку на терминальный ноль.

Решение задачи: «Разбить предложение на слова и занести каждое в массив»

textual
Листинг программы
#include <stdio.h>
 
int main(void)
{
    char string[] = "I love you";
    char mass[3][10];
    size_t i, j;
    for(i = 0, j = 0; i < 3; i++, j++){
        size_t k = 0;
        while(string[j] != ' ' && j < strlen(string)){
            mass[i][k++] = string[j++];
        }
        mass[i][k] ='\0';
        printf("%s\n", mass[i]);
    }
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлены переменные:
    • string - строка, содержащая предложение I love you.
    • mass - массив из трех строк, каждая из которых содержит подстроку из предложения.
    • i и j - индексы, используемые в цикле.
    • k - индекс, используемый внутри цикла while.
  2. В цикле for происходит следующее:
    • Переменная i инициализируется значением 0, а переменная j - значением 0.
    • Цикл выполняется три раза (для каждого подмассива mass).
    • Внутри цикла while происходит следующее:
    • Переменная k инициализируется значением 0.
    • В цикле while происходит заполнение текущего подмассива mass[i] символами из строки string, пока не встретится пробел или не закончится строка string.
    • После окончания цикла while, в последнем символе строки mass[i] устанавливается символ конца строки \0.
    • Выводится текущий подмассив mass[i].
  3. По завершении цикла for программа возвращает 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы