如何修复从 CSV 文件填充两个单独数组的代码,其中包含 C 语言中用分号分隔的单词?
我的 CSV 文件看起来像这样:
to meet/encounter;begegnen
to care for/look after;betreuen
superior;vorgesetzt
to borrow/lend/rent;ausleihen
我的功能:
#define LINE_SIZE 100
#define STRING_SIZE 55
char **source_vocab = NULL;
char **target_vocab = NULL;
void allocate_mem(char **dictionary, int n)
{
for(int i = 0; i < n; i++)
{
dictionary[i] = malloc(STRING_SIZE * (sizeof(char)));
if(dictionary[i] == NULL)
{
printf("%sMemory Error. Exiting..", RED);
return;
}
}
}
void populate_arrs(FILE *fptr)
{
char *line = malloc(LINE_SIZE * sizeof(char));
int count = 0;
while(fgets(line, sizeof(line), fptr) != NULL)
{
line[strcspn(line, "\n")] = 0;
char *token = strtok(line, ";");
token = strtok(line, ";");
if(token != NULL)
source_vocab[count] = strdup(token);
token = strtok(NULL, ";");
if(token != NULL)
target_vocab[count] = strdup(token);
count++;
}
}
它产生的输出不正确:
英语: 见面
德语:ow/借出
英语: encou
德语: leihen
英语: nter
德语:
英语: gegnen
我尝试修改示例 CSV 文件并使用 TXT 文件。这没有帮助。该函数应该完美地将我的单词分成两个数组,例如:
英语: 遇见/相遇
德语: begegnen
这里有一个问题:
while(fgets(line, sizeof(line), fptr) != NULL)
^^^^^^^^^^^^
它的意思是“char指针的大小”。它不是它指向的内存大小。
所以请使用
LINE_SIZE
来代替。