Используйте Strtok для разделения токенов с помощью 2d-массива - PullRequest
0 голосов
/ 21 июня 2020

Я возился с C и хочу попробовать выполнить следующие инструкции. Я понимаю, что использование двумерного массива не обязательно, но, поскольку об этом говорится в инструкциях ниже, нельзя обсуждать иначе. поэтому Пользователь вводит дату в следующем формате

Saturday, July 8, 2017, 22:14:10

, и я хочу использовать strtok для разделения токенов и отображения вывода следующим образом:

Month: July
Day: 8
Year: 2017
Hour: 22
Minute: 14
Second: 10

Мне нужно сделать это путем создания массива строк (или двумерной строки) и копирования токенов таким образом, чтобы s [0] = «июль», s [1] = «8» и s [5] = «10». Используйте a вместо l oop, чтобы отобразить s [0] до s [5]. У меня пока есть:

#include <stdio.h>
#include <string.h>

//"Saturday, July 8, 2017, 22:14:10"

int main(void) {
    char date[8][20];
    char *order[] = {"Month", "Day", "Year", "Hour", "Minute", "Second" };
    printf(" Example: Saturday, July 8, 2017, 22:14:10 \n Enter date seperated by commas in following format: \n");
    char text[64];
    scanf(" %s, text");

    char* delims = " ,:";
    char* token = strtok(text,delims);
    char** label =  order;
    int r = 0;
    while (token){

        strcpy(date[r],token);
        if (!date[r][0]) continue;
        printf("%-8s: %s\n ",*label,date[r]);
    token = strtok(NULL,delims);
    label++;
    r++;
    }
    return 0;
}

Это мой результат, когда я запускаю код

Пример: суббота, 8 июля 2017 г., 22:14:10 Введите дату, разделенную запятыми в следующий формат: понедельник, 1 августа 2012 г., 21: 12: 9 Месяц: éq (u Процесс завершен с кодом выхода -1073741819 (0xC0000005)

Что я делаю не так. Пожалуйста, помогите!

...