Как связать несколько частей строки с помощью strchr () в C? - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в C, и я хотел бы узнать, как я могу выделить несколько слов из строки, просто используя strchr () .. не могу использовать strtok, scanf или подобные функции ..

У меня есть строка:

char myImput[51]="my flight to New Orleans, is at 12:30"

формат строки: «название города моего рейса в формате чч: мм» я хочу извлечь название города (оно может содержать пробелы) чч и мм

есть ли способ добавить название города в новую строку с названием city, от hh до часа и от mins до минут?

Я хотел бы:

printf("the flight to %s, is at %s hr and %s mins", cityname, hour, minutes);

Буду очень признателен за помощь, заранее спасибо

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

У меня есть предложение с strchr, если вы должны его использовать:

    const char myImput[51]="my flight to New Orleans, is at 12:30";
    const char ch = ' ';//ch is the delimiter'an unsigned char)
    char *rst;//the string result after the first occurence of ch
    rst=strchr(myImput,ch) ;
     printf("String after |%c| is - |%s|\n", ch, rst) ;

     while(rst !=NULL)
     {
     printf("String after |%c| is - |%s|\n", ch, rst) ;
     rst=rst+1 ;
     rst = strchr(rst, ch);
     }

PS: я увеличиваю rst rst = rst + 1, потому что strchr возвращает первый вхождение разделителя с результатом, в вашем случае, например, он возвращает «полет в Новый Орлеан, в 12:30» с пробелом в первой строке, и это вызывает бесконечное l oop, потому что он всегда находит, что первое вхождение - это пробел! Я надеюсь, что вы меня не понимаете! твоя очередь сделать то же самое для времени.

0 голосов
/ 06 апреля 2020

В C функция strtok () используется для разделения строки на серию токенов на основе определенного разделителя. и это синтаксис: char *strtok(char *str, const char *delim), поэтому вы можете сделать это просто так:

 char myImput[51]="my flight to New Orleans, is at 12:30";
 // Extract the first token
 char * token = strtok(myImput, " ");
 // loop through the string to extract all other tokens
  while(token != NULL ) {
  printf( " %s\n", token ); //printing each token
  token = strtok(NULL, " ");
  }

Теперь вам нужно сделать то же самое для токена времени (который является последним токеном в вашем случае). для получения дополнительной информации проверьте эту ссылку :

...