[英]Need help using the strsep function in c
int main(int argc, char *argv[])
{
char *line, buffer[1024];
char *token, *setValue, *pointer;
FILE *fp = fopen("file", "r");
if(fp == NULL)
{
printf("File was unable to be opened.\n");
}
fgets(buffer,1024,fp);
printf("%s\n", buffer);
while(fgets(buffer,1024,fp) != NULL)
{
strcpy(token, strsep(&buffer, ","));
printf("%s\n", token);
}
return 0;
}
我在理解 strsep 的工作原理时遇到了一些麻烦.. 我已经查找了它的教程,但是当我尝试不同的方法时,它一直无法编译.. 如果有人帮助我理解,我将不胜感激语法及其工作方式。 谢谢你。
**编辑:“缓冲区”包含“我,曾经,在,学校,学校”
****编辑 x2:我正在尝试解析一个 csv 文件,并以我在桌面上创建的基本“缓冲区”为例。 我想用相应的逗号分隔不同的单词。
关于:
strcpy(token, strsep(&buffer, ","));
变量token
只是一个指针,它没有被设置为指向应用程序拥有的任何内存。 因此,它将包含堆栈中变量位置的垃圾。
结果是未定义的行为,并且可能导致段错误事件。
建议将token
声明为
char token[ 1024 ];
所以它足以容纳最大长度的字符串(即buffer[]
的长度buffer[]
因为上面还不够糟糕:
发布的代码缺少语句: #include <string.h>
以便公开函数strsep()
的原型,因此编译器将假设参数和返回值是int
而不是它们的实际类型。
发布的代码也缺少语句: #include <stdio.h>
因此函数的参数和返回类型: fopen()
、 fgets()
、 printf() and even the struct type for
FILE and even the struct type for
are assumed to be
int`而不是它们的实际类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.