我使用 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
编译此程序时,一切正常。