无法通过csvparser读取csv文件

时间:2016-05-24 19:47:43

标签: c parsing csv clion

我使用 CLion 代码编辑器。 为了解析csv文件,我使用C/C++ csvparser

data.csv的争论:

Country,Continent,National Language
United States,North America,English
Canada,North America, French
Mexico,North America,Spainish

我创建了名为Tutorial的项目。 我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.4)
project(Tutorial)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.c)
add_executable(Tutorial ${SOURCE_FILES})
target_link_libraries(Tutorial csvparser)

main.c的内容。它来自official page

#include "csvparser.h"

int main() {
    int i =  0;
    //                                   file, delimiter, first_line_is_header?
    CsvParser *csvparser = CsvParser_new("data.csv", ",", 1);
    CsvRow *header;
    CsvRow *row;

    header = CsvParser_getHeader(csvparser);
    if (header == NULL) {
        printf("%s\n", CsvParser_getErrorMessage(csvparser));
        return 1;
    }
    const char **headerFields = CsvParser_getFields(header);
    for (i = 0 ; i < CsvParser_getNumFields(header) ; i++) {
        printf("TITLE: %s\n", headerFields[i]);
    }
    // Do NOT destroy the headear manually if you plan to destroy the parser later.
    // If you destroy both header and parser, you will get double free runtime error
    // CsvParser_destroy_row(header);
    while ((row = CsvParser_getRow(csvparser)) ) {
        printf("==NEW LINE==\n");
        const char **rowFields = CsvParser_getFields(row);
        for (i = 0 ; i < CsvParser_getNumFields(row) ; i++) {
            printf("FIELD: %s\n", rowFields[i]);
        }
        printf("\n");
        CsvParser_destroy_row(row);
    }
    CsvParser_destroy(csvparser);

    return 0;
}

但是它给出了一个错误:

/home/ken/.CLion2016.1/system/cmake/generated/Tutorial-9a39f70/9a39f70/Debug/Tutorial
Error opening CSV file for reading: data.csv : No such file or directory

奇怪,但`data.csv'文件实际存在于当前文件夹中。

我试图通过绝对路径,但它没有帮助。 我该如何避免这个问题?

P.S 值得注意的是,当我按gcc main.c -I ../include ../src/csvparser.c -o main编译此程序时,一切正常。

0 个答案:

没有答案