这是我第一次在这里提问,所以我希望我能正确地做到这一点!有一段时间了,我一直试图让getline和strtok一起工作,以便从文件中读取文本并将其分解为单词 . 本质上,文本文件输入是一篇文章,我想稍后单独操作每个单词 . 我得到的问题是一个常量“赋值使整数指针没有强制转换”;我已经尝试了我能想到的一切 . 这是我现在的代码:
int nbytes = 100;
char *buffer;
char *token;
buffer = (char *) malloc(nbytes + 1);
getline(&buffer,&nbytes,file);
token = strtok(&buffer, " ");
我觉得这个问题很简单,我忽略了 . 那你阅读和你的帮助!
3 回答
标准C(单独)没有定义名为
getline
的任何内容 . 要从文件中读取一行,通常使用fgets
.您描述的错误听起来好像您没有范围内的
strtok
原型,因此编译器将其视为返回默认类型(int) . 您通常会在靠近文件顶部的某处添加#include <string.h>
来消除它 .我认为你不希望
&buffer
在你的strtok()
电话中 . 此外,您不包括string.h
,这就是您收到警告"assignment makes pointer from integer without a cast"的原因 . 如果没有正确的strtok()
原型,编译器会假设它返回int
. 将int
转换为char *
以将作业分配给token
是它所抱怨的作业 .编辑 - 感谢@dmckee签名
getline()
.还有一个错误是使用&缓冲区而不是缓冲区 .
&buffer是指向char的指针,但是你需要指向char的指针 .