如何在C中一起使用getline和strtok?

时间:2011-03-27 05:20:26

标签: c

这是我第一次在这里提问,所以我希望我能正确地做到这一点!有一段时间了,我一直试图让getline和strtok一起工作,以便从文件中读取文本并将其分解为单词。本质上,文本文件输入是一篇文章,我想稍后单独操作每个单词。我得到的问题是一个常量“赋值使整数指针没有强制转换”;我已经尝试了我能想到的一切。这是我现在的代码:

int nbytes = 100;
char *buffer;
char *token;
buffer = (char *) malloc(nbytes + 1);
getline(&buffer,&nbytes,file);
token = strtok(&buffer, " ");

我觉得这个问题很简单,我忽略了。那你阅读和帮助!

3 个答案:

答案 0 :(得分:2)

标准C(单独)不定义任何名为getline的内容。要从文件中读取一行,通常使用fgets

您描述的错误听起来就像您在作用域中没有strtok的原型一样,因此编译器将其视为返回默认类型(int)。您通常会在靠近文件顶部的某处添加#include <string.h>来消除这种情况。

答案 1 :(得分:1)

我认为您&buffer来电时不希望strtok()。此外,您不包括string.h,这就是为什么您收到警告“赋值从没有强制转换的整数生成指针”的原因。如果没有正确的strtok()原型,编译器会假设它返回int。将int转换为char *以将作业转换为token是其抱怨的作业。

编辑 - 感谢@dmckee签名getline()

答案 2 :(得分:0)

另一个错误是使用&amp;缓冲区而不是缓冲区。

&amp; buffer是指向char的指针,但是你需要指向char的指针。