首页 文章

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

提问于
浏览
1

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

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

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

3 回答

  • 1

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

    您描述的错误听起来好像您没有范围内的 strtok 原型,因此编译器将其视为返回默认类型(int) . 您通常会在靠近文件顶部的某处添加 #include <string.h> 来消除它 .

  • 2

    我认为你不希望 &buffer 在你的 strtok() 电话中 . 此外,您不包括 string.h ,这就是您收到警告"assignment makes pointer from integer without a cast"的原因 . 如果没有正确的 strtok() 原型,编译器会假设它返回 int . 将 int 转换为 char * 以将作业分配给 token 是它所抱怨的作业 .

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

  • 0

    还有一个错误是使用&缓冲区而不是缓冲区 .

    &buffer是指向char的指针,但是你需要指向char的指针 .

相关问题