Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 14:09   #1
Hesh
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 3
По умолчанию Си: каждое слово строки в ряде двумерного массива

Всем привет.
Такая задача: есть строка "aaa bbb ccc", нужно, чтобы каждое слово было в ряде массива, т.е. mas[0][10] = "aaa"; mas[1][10] = "bbb"; и т.д. Реализовать нужно именно на Си.

Есть идея считать сначала всю строку в одномерный массив:
char str[100];
gets(str);

Потом с помощью циклов посимвольно анализировать массив str и если попадается символ пробела, записывать всё что до него до предыдущего пробела в mas[i][10].

Но что-то не понимаю, как это реализовать, да и способ, наверное неоптимальный.
Hesh вне форума Ответить с цитированием
Старый 23.09.2012, 15:48   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Удобнее, наверное, считывать посимвольно и сразу записывать.

Код:
while (!feof(file)) {
  char c;
  // считать один байт, не помню как на си
  if (c == '\n') {
    ++row_index;
    symbol_index = 0;
  } else {
    mas[row_index][symbol_index] = c;
    ++symbol_index;
  }
}
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 23.09.2012, 16:56   #3
Hesh
Новичок
Джуниор
 
Регистрация: 23.09.2012
Сообщений: 3
По умолчанию

c = getchar(); считать один символ в си.

А можно поподробние про условие цикла while? Если у меня идёт ввод с клавиатуры.

P.S. В общем, у меня так получилось. Вроде работает.
Код:
while ( (c = getchar()) != '\n') {
     if (c == ' ') {
    ++row_index;
    symbol_index = 0;
  } else {
    mas[row_index][symbol_index] = c;
    ++symbol_index;
  }
}

Последний раз редактировалось Hesh; 23.09.2012 в 17:10.
Hesh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строки и столбца из двумерного массива Hitory Общие вопросы Delphi 0 06.06.2012 20:59
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
обмен столбца и строки двумерного массива Shelena Помощь студентам 12 08.11.2010 12:04
Удаление строки из двумерного динамического массива hidraulik Общие вопросы C/C++ 0 08.12.2009 10:48
Assembler TASM/ Разработать прогу:разбивающую каждое слово текстовой строки на две части levis07 Фриланс 5 20.11.2009 10:34