Как прочитать два или три столбца из файла и распечатать его?
#include <stdio.h> #include <string.h> #include <stdlib.h> #define STRING_LEN 200 int compare(const void * a, const void * b) { return strcmp(a, b); } int main(){ FILE * fp1 = fopen("file.csv", "r"); int count = 0, i; char string[STRING_LEN], record1[5][STRING_LEN], record2[5][STRING_LEN]; char * wordOne = NULL; char * wordTwo = NULL; char * wordThree = NULL; while(fgets(string, STRING_LEN, fp1)){ string[strcspn(string, "\n")] = 0; wordOne = strtok(string, ","); wordTwo = strtok(NULL, ","); wordThree = strtok(NULL, ","); strcpy(record1[count++], wordOne); strcpy(record2[count++], wordTwo); } printf("Before:\n"); for(i = 0; i < count; ++i) printf("%s\n", record1[i]); qsort(record1, count, sizeof(record1[0]), compare); qsort(record2, count, sizeof(record2[0]), compare); printf("\nAfter:\n"); for(i = 0; i < count; ++i) printf("%s,%s\n", record1[i], record2[i]); exit(0); return 0; }
Что я уже пробовал:
Файл содержит три столбца, но в этом коде всякий раз, когда я пытаюсь распечатать первый столбец, он печатается, но когда я пытаюсь распечатать два столбца, они печатаются вот так. Я не знаю, как с этим справиться?
After: ,0�'� ,13/10/1990 Ali Ahmed,20/10/1990 Bilal Khan,�&�
Richard Deeming
Это похоже на проблему с кодировкой. Проверьте кодировку, используемую для записи файла.
CPallini
Вы не сообщили о выводе "до".
Richard MacCutchan
Пожалуйста, покажите нам содержимое вашего файла.