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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2016, 19:41   #1
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию [язык Си] Проверка на конец строки

Подскажите, как проверить масив символов на конец строки? Мне надо чтобы функция срабатывала после каждого слова, так что я сделал срабатывание по пробелу, а как сделать так чтобы не надо было в конце писать пробел?
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 12.12.2016, 20:16   #2
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
Подскажите, как
Хорошо бы ещё писать какой язык.
olej.tsil вне форума Ответить с цитированием
Старый 12.12.2016, 20:23   #3
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

C конечно
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 12.12.2016, 20:46   #4
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
C конечно
Цитата:
Кому и кобыла невеста.
А если "C конечно", то последний символ строки - это символ с значением '\0' (или просто числовым значением 0), который в длину строки на входит.
olej.tsil вне форума Ответить с цитированием
Старый 12.12.2016, 21:14   #5
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Да? А я то голову ломал...
Я знаю это. Я спрашиваю как сделать проверку последний это символ или нет, потому что не выходит проверить на '\0' или '0'.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 12.12.2016, 21:27   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Возможно, что строки вводились с клавиатуры и в конце стоит символ '\n'.
Посмотрите тут:
http://cppstudio.com/post/9567/


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.12.2016, 22:25   #7
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
Я спрашиваю как сделать проверку последний это символ или нет, потому что не выходит проверить на '\0' или '0'.
Если очередной символ == 0, то он гарантировано последний в строке.
Как это может быть, что не "выходит".

А вообще то, для разделения строки на токены (слова) есть стандартные функции, такие как strtok() или strsep().
olej.tsil вне форума Ответить с цитированием
Старый 13.12.2016, 13:12   #8
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Цитата:
Как это может быть, что не "выходит".
if(isspace(str[i]) || str[I]==0){
//Функция
}
Не работает
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 13.12.2016, 19:24   #9
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
Не работает
Та ты шо?
Беда...

Код:
int main( void ) {
   char s[ 255 ] = "aaa zzz xxx s xxxx yyy xxx";
   for( int i = 0; i < sizeof( s ); i++ ) {
      if( s[ i ] == ' ' || s[ i ] == '\0' ) printf( "\n" );
      if( s[ i ] == '\0' ) break;
      if( s[ i ] != ' ' ) printf( "%c", s[ i ] );
   }
   return 0;
}
Код:
[olej@dell draft-temp]$ gcc w1.c -ow1
[olej@dell draft-temp]$ ./w1
aaa
zzz
xxx
s
xxxx
yyy
xxx
olej.tsil вне форума Ответить с цитированием
Старый 13.12.2016, 19:28   #10
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от olej.tsil Посмотреть сообщение
Беда...
Но по-людски это делается как-то так:
Код:
int main( void ) {
   char s[ 255 ] = "aaa zzz xxx s xxxx yyy xxx",
        *p = strtok( s, " " );
   while( p != NULL ) {
      printf( "%s\n", p );
      p = strtok( NULL, " " );
   }
   return 0;
}
olej.tsil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать слияние двух строк в одну, если конец первой строки и начало второй строки совпадают JustDo1t C# (си шарп) 2 17.12.2015 20:17
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Вводится последовательность ненулевых чисел, 0 – конец последовательности. Каждое число разделить на его порядковый ном(C++ язык) dimazak2009 Помощь студентам 8 12.03.2012 13:59
конец строки andrei100 Общие вопросы C/C++ 1 06.10.2011 00:37
'\0' конец строки rowlin Общие вопросы C/C++ 12 04.06.2011 18:12