Конвертировать данные из файла в массив целых чисел (C) - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть следующие данные в текстовом формате. И я хочу извлечь каждое число 4-го столбца в массив без повторяющихся чисел

[1] [0] 1   50
[1] [2] 1   6

[1] [13]    4   8-35-38

Вывод должен выглядеть примерно так: [50,6,8,35,38]

Как я могу сохранить их в массиве?

1 Ответ

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

Ниже моя идея, надеюсь, она поможет вам.

Вы можете использовать информацию fgets из этого файла

char line[256];
int first, second, third;
char forth[256];
while (fgets(line, sizeof(line), file)) {
    printf("%s", line); 
    sscanf(line, "[%d] [%d] %d   %s\n", &first, &second, &third, forth)
}

Затем, используя strtok и atoi (преобразовать строку в int, вы также можете использовать strtol или sscanf ), чтобы получить все номера каждой строки.

char* token = strtok(line, "-"); 

    while (token != NULL) { 
        int i = atoi(token)
        token = strtok(NULL, "-"); 
    } 

Скопируйте значение i в массив.

Затем создайте функцию для удаления повторяющегося числа, например:

uint32_t delete_duplicate_value (uint32_t * list, uint32_t size) {
    for (uint32_t i = 0; i < size; i++) {
        for (uint32_t j = i+1; j < size; j++) {
            if (list[i] == list[j]) {
                for (uint32_t k = j; k < size; k++) {
                    list[k] = list[k + 1];
                }
                size--;
                j--;
            }
        }
    }
    return size;
}
...