Как получить конкретные данные из текстовой строки - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь получить адрес определенной строки в текстовом файле.Эта строка содержит следующее;

Kmart, 7055 Восточный Бродвей, Тусон AZ

Я использую функции strcpy и strtok для извлечения адреса (7055 Восточный Бродвей), но пока мне удалось извлечь только имямагазина (Kmart) используя мой код.

char strLine [] получает строку из файла, и я хотел бы вернуть ее в char strAddress []

Как мне извлечь только адрес и, возможно, город и штат?

#define MAX_CHARS_PER_LINE 80

void getAddress(char strAddress[], const char strLine[])
{

   char newLine[MAX_CHARS_PER_LINE+1];

   strcpy(newLine,strLine);
   char* token = strtok(newLine, ",");

   strAddress = token;

   printf("%s\n",strAddress);


}

1 Ответ

0 голосов
/ 11 июля 2019

Предполагая,

  1. Адрес является вторым элементом в строке
  2. Разграничено запятыми.

Вы можете использовать strtok для получения адреса, как показано ниже.

void getAddress(char strAddress[], const char strLine[])
{
   char newLine[MAX_CHARS_PER_LINE+1];

   strcpy(newLine,strLine);

   char* token = strtok(newLine, ",");
   if (token != NULL)
   {
        token = strtok(NULL, ",");
   }
   if (token != NULL)
   {           
       strcpy (strAddress,token);
   }            
   return; 
}   

Чтобы узнать город и штат, просто позвоните token = strtok(NULL, ","); еще раз

Что если бы я хотел отделить город-государство и просто получить город и получить штат отдельно?

Это более сложная работа, поскольку у вас нет запятой между городом и штатом. Вы также должны позаботиться о случае, когда город может иметь два слова, например, Новый Орлеан.

Можно предположить, что в состоянии 2 символа. В этом случае рекомендуемый маршрут

  1. Изолировать город + штат в строке
  2. Удалить пробелы в конце строки
  3. Последние 2 символа строки являются состоянием.
...