这是我第一次在这里提问,所以我希望我能正确地做到这一点!有一段时间了,我一直试图让getline和strtok一起工作,以便从文件中读取文本并将其分解为单词。本质上,文本文件输入是一篇文章,我想稍后单独操作每个单词。我得到的问题是一个常量“赋值使整数指针没有强制转换”;我已经尝试了我能想到的一切。这是我现在的代码:
int nbytes = 100;
char *buffer;
char *token;
buffer = (char *) malloc(nbytes + 1);
getline(&buffer,&nbytes,file);
token = strtok(&buffer, " ");
我觉得这个问题很简单,我忽略了。那你阅读和帮助!
答案 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的指针。