gpt4 book ai didi

c - 需要帮助使用 c 中的 strsep 函数

转载 作者:行者123 更新时间:2023-11-30 19:31:25 28 4
gpt4 key购买 nike

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[] 的长度

因为上面的还不够糟糕:

发布的代码缺少以下语句:#include <string.h>从而暴露函数 strsep() 的原型(prototype)所以编译器会假设参数和返回值是 int而不是它们的实际类型。

发布的代码也缺少语句:#include <stdio.h>所以函数的参数和返回类型:fopen() , fgets() , printf() and even the struct type for文件are assumed to be int` 而不是它们的实际类型。

关于c - 需要帮助使用 c 中的 strsep 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653922/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com