繁体   English   中英

C:strtok结构体中的指针

[英]C: strtok on pointer inside a struct

我有这个定义的结构:

typedef struct gRow{
    char *txt;
    char *fileName;
    int line;
} gRow;

而且我想在txt字符串上使用strtok。 因此,在某些具有gRow *row函数中,我这样做:

strtok(row->txt, SEPERATOR_CHARACTERS);

这就是我遇到细分错误的地方。 如果我将其替换为:

strtok(strdup(row->txt), SEPERATOR_CHARACTERS);

它工作正常。 有什么想法吗?

谢谢。

Shahar。

请注意,strtok会修改字符串-如果您的txt指针指向只读字符串(例如const字符串文字),那么您将获得异常。

您需要为gRow * row分配内存; 我希望这样就可以了。

strtok修改给它的字符串。 如果您无权修改它,则可能会遇到细分错误。 strdup通过复制字符串来防止这种情况。

strtok修改其第一个参数。

如果1看起来像您正在传递一个指向char常量的指针,则该指针不能被修改。

在第2种情况下,您传递了strdup返回的可修改副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM