【发布时间】:2014-12-08 22:48:09
【问题描述】:
我正在用 C++ 编写一个程序,它接受文件名的参数,参数是 char*
例如:myFile.lan
我需要删除此 char* 的最后 3 位数字(“lan”)并将其更改为“asm”(例如:myFile.asm)
通过strcpy 将字符添加到字符指针似乎很容易,但是有人知道如何从字符指针中删除字符吗?
【问题讨论】:
-
您可以使用
strcpy覆盖它们。不过要小心,因为如果您要覆盖的数字至少为 3 位,这将不起作用。如果您无法使其工作,请发布您尝试过的代码。 -
I know these seems super simple专业程序员的许多错误源于使用原始 C 字符串和char *做这些“超级简单”的事情。这就是为什么 C++ 有std::string... -
使用 strstr() 查找搜索字符串的开头(I 将搜索 '.',然后前进一个字符以查找结尾字符串。(我们可以假设'.'之后总是有3个字符?然后通过将'.'之后的第一个字符设置为'\0'来替换尾随字符。然后使用strcat(原始字符串,“asm”)
-
顺便说一句,您使用的是什么操作系统?如果是 Windows,则不必自己执行此操作,因为有很多 Windows API 函数可以拆分文件路径字符串。如果是这样,让操作系统为您拆分字符串,而不是您必须搜索一个点,做其他事情,并且可能会出错或遇到“边缘情况”。例如,扩展名不必是 3 个字符。