【发布时间】:2012-07-20 06:52:15
【问题描述】:
我有一个包含行的文本文件,每行包含不超过 80 个字符。每行包含(一个或多个单词),以逗号或空格分隔。我需要词典对单词进行排序。我想将 scanf 与字符串的符号“%s”一起使用,但它只考虑空格。所以我想我不能。有什么比逐个字符更聪明地处理单词解析的方法吗?
这是我打算做的事情的草图:
char**arr;
arr=calloc(Size, sizeof(char)*80);
int m=0;
while (!feof(file)) {
char c=fgetc(file);
while (c!='/n') {
j=0;
char* current;
current=calloc(1,sizeof(char)*80);
while (c!=','&& c!=' ' && c!='/n') {
current[j]=c;
j++;
c=fgetc(c);
}
current[j]='\0';
arr[m]=current;
free(current);
}
}
【问题讨论】:
-
你知道strtok函数吗?我想你可能会觉得它很有帮助。
-
我也可以将它与“/n”一起使用吗? pch = strtok (str," , /n ")?
-
'/n'有问题,不是单个字符而是两个字符。我想你的意思是'\n'? -
是的 - 但请按照 Joachim 的建议将其更改为反斜杠(假设您想换行)。干杯!
-
您也有一个问题,即您正在分配内存,然后释放该内存,同时您保存指向该内存的指针。调用
free后,您不应访问该内存。