Как ввести строковые токены в 2d массив? - PullRequest
0 голосов
/ 24 января 2019

Попытка получить список входов с разделителем "|":

Публичный | Джейн | Q | Мисс. | 600 | Кленовая улица | Ваш город | Айова | 12345

А затем хотел бы ввести их в 2d массив (customerData), которым я могу манипулировать.

Я понимаю, что мне не хватает int main () и кода для чтения файла / ввода.Просто включая соответствующий код.Я могу получить ввод, это добавление в customerData того, с чем я борюсь.

#define INPUT_LENGTH 128
#define FIELD_LENGTH 30
#define NUM_FIELDS   9


char input[INPUT_LENGTH];                    
char customerData[NUM_FIELDS][FIELD_LENGTH];  
int  element = 0;
int customer = 0;

while ( fgets( input, INPUT_LENGTH, data ) != NULL ) {
  char* token = strtok(input, "|"); // start tokeninzing
  while (token) { // end of string last token is NULL
    strcpy(customerData[customer][element], token); 
    token = strtok(NULL, "|"); 
    element++;
  }
  customer++;  
}

for (int i = 0; i < entry; i++) {
  for (int k = 0; k < element; k++) {
    printf("%s\n", customerData[i][k]);
  }
}

Я ожидаю вывод, подобный этому:

Public
Jane
Q
Ms.
600
Maple Street
Your Town
Iowa
12345

1 Ответ

0 голосов
/ 24 января 2019

отправленный код продолжает добавлять 1 к element, даже если это новая строка / новый клиент.

Предложить после оператора:

customer++; 

, чтобы вставить оператор:

element = 0;

также относительно:

char customerData[NUM_FIELDS][FIELD_LENGTH];

Я ожидаю, что первая часть массива будет номером клиента, затем NUM_FIELDS, а затем FIELD_LENGTH

Также,для ясности предлагаем element заменить на fieldNum

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...