ibilalkayy Ответов: 0

Как прочитать два или три столбца из файла и распечатать его?


#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

Пожалуйста, покажите нам содержимое вашего файла.

0 Ответов