最终目标是输出一个文本文件,其中重复的单词被编码为单个数字。我目前遇到的问题是读取单词并将其存储到数组中。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_CODE 120
void main() {
FILE *inputfile = fopen("input.txt","rw");
char buffer[128];
char *token;
char *words[MAX_CODE];
int i = 0;
while(fgets(buffer, 128, inputfile)){
token = strtok(buffer," ");
printf("Token %d was %s",i,token);
while(token != NULL) {
words[i] = malloc(strlen(token)+1);
strcpy(words[i], token);
i++;
token = strtok(buffer," ");
}
}
for(int i = 0; i<3; i++) printf("%d\n%s\n",i,words[i]);
printf("End");
}
我得到的是分段错误或者没有任何输出。我想要的是把单词变成字符串数组。我为每个字符串分配了内存,那么我错在哪里呢?
token = strtok(buffer," ");
may beNULL
, next lineprintf("Token %d was %s",i,token);
will crash. Add check for(token != NULL)
or handle it withtoken ? token : "NULL"
- Hedgehog