【问题标题】:I want to use memset to remove some characters from string我想使用 memset 从字符串中删除一些字符
【发布时间】:2015-05-23 13:14:25
【问题描述】:

我使用memset()path 字符串中删除text.txt,但下面的代码不起作用。

请告诉我是什么问题。

char *path = "tt/tt/tt/text.txt";
char *direc = "";
int minus = 0;
int i;

for (i = strlen(path) - 1; i > 0; i--)
{ 
    if (path[i] == '/')
        break;
    else
        minus++;
}
memset(path + i, '\0', strlen(path) - minus);

printf("%s", path);

return 0;

【问题讨论】:

    标签: c arrays string pointers memset


    【解决方案1】:

    这里的问题是,path 指向一个字符串文字,它通常存在于只读内存中。你不能改变它的内容。

    请尝试使用类似的数组

    char path[ ] = "tt/tt/tt/text.txt";
    

    【讨论】:

    • 谢谢。现在,它不工作了! :)
    • @Olaf 我强烈建议您在发表此类评论之前阅读第 §6.4.5、C11 标准第 7 段。随意询问是否有任何不清楚的地方。 :)
    • 我的错!忘了那个。反对被撤回。谢谢指正。
    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多