c - 我想使用 memset 从字符串中删除一些字符

标签 c arrays string pointers memset

我使用 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;

最佳答案

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

相反,尝试使用像这样的数组

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

关于c - 我想使用 memset 从字符串中删除一些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413116/

相关文章:

c# - 获取字符串中模式的匹配项

c - 错误: 'void*' is not a pointer-to-object type

c - 字符串未正确转换为小写

c++ - Stock incoming char in 循环函数

javascript - 迭代对象时检查对象与数组

php - 使用 PHP foreach 选择特定索引的值

arrays - 如何将真实数据(不是测试数据)附加到 SwiftUI 中的列表?

c# - 在 C# 中按字符反转字符串

c++ - 一旦到达主函数末尾,就会发生调试运行时堆栈错误

用gcc编译C程序;无法打开输出文件_.exe : no such file or directory