2015-10-27 4 views
0

Я пытаюсь взять файл csv и назначить строки из него в csv. Я пробовал пару вещей с очень небольшой удачей. Это то, что я до сих пор:Добавление символов в массив символов из csv.

int main(int argc, char* argv []) { 
    FILE *file = fopen(argv[1], "r"); 
    int x; 
    char strings[50]; 
    while ((x = fgetc(file)) != EOF) { 
     printf("%c", x); 
    } 
    fclose(file); 

    return 0; 
} 

Я создал Струны массив символов, но я не уверен в том, чтобы присвоить содержимое моего CSV в него. Есть идеи?

Заранее спасибо.

+0

поведение, что вы хотите неясна. – BLUEPIXY

+0

Показать несколько строк вашего файла csv? – haccks

ответ

0

Вы можете использовать fgets непосредственно прочитать в массив strings -

char strings[255];         //give size accordingly 
while(fgets(strings,sizeof strings,file)!=NULL) {  //iteratre until fgets return NULL 
    printf("%s", strings);       //print string that is read from file 
} 

Примечание -

1.You не проверил значение argc, а также return из fopen. Вероятно, вы должны проверить их.

+0

Оставьте комментарий после downvote. – ameyCU

0

Вы можете использовать свой подход для чтения символов. Заполните свой временный буфер, когда вы идете, но будьте осторожны, чтобы не переполнять его. Когда вы сталкиваетесь с разделителем – запятой для столбцов, строка новой строки для строк – обрабатывает текущий буфер.

Сброс буфера, настройка текущей строки и столбца и повторение до тех пор, пока вы не найдете конец файла. Если вы хотите сохранить содержимое ячейки, обязательно сделайте копию, потому что буфер нуля будет перезаписан.

Вот простой пример, который просто печатает данные:

#include <stdlib.h> 
#include <stdio.h> 

int main(void) 
{ 
    FILE *file = fopen("example.csv", "r"); 
    // check for errors 

    char buf[50]; 
    int nbuf = 0; 

    int row = 0; 
    int col = 0; 

    for (;;) { 
     int c = fgetc(file); 

     if (c == EOF) break; 

     if (c == '\n' || c == ',') { 
      buf[nbuf] = '\0'; 
      printf("[%d][%d] '%s'\n", row, col, buf); 
      nbuf = 0; 

      if (c == ',') { 
       col++; 
      } else { 
       col = 0; 
       row++; 
      }  
     } else { 
      if (nbuf + 1 < sizeof(buf)) buf[nbuf++] = c; 
     }   
    } 

    fclose(file); 

    return 0; 
} 
Смежные вопросы