说我必须从另一个字符串中删除最后发生的字符串。我会怎么做呢?如何从另一个字符串中删除最后一次出现的字符串?
为了详细说明,我在AC的字符串的文件名(gchar *或字符*)
C:\ SomeDir \ SomeFolder \ MyFile.pdf
,我想删除扩展名.pdf,并将其更改为其他内容,例如.txt或.png。什么是最麻烦但高效,方便和跨平台的方式来做到这一点?谢谢。
注:我知道这是一个非常简单的事情,在C++中,但这个项目做,我绝对必须使用C和任何其他语言。 (学术要求)
注2::虽然你可以建议其他的第三方库,我目前只可以访问C标准库和GLib的。
注3:我已经寻找与“C”标记类似的问题,但似乎无法找到任何。
将扩展永远是3个charachters足够长(例如指示),将他们永远是在路径的尽头?什么编码是你的源字符串?如果它的常规ASCII可以执行'memcpy(source [strlen(source) - 4/* count for \ 0 * /],new_ext/* 3 chars + \ 0 * /,4);' – RedX
@RedX对于我的程序,文件名将作为命令行参数输入,所以我不确定扩展名的大小。例如,如果有人传递* .aspx文件?是的,字符串是ASCII码,扩展名总是在路径的末尾。 – ApprenticeHacker
然后我会说反向搜索最后一个点的字符串,从输入的长度中减去该字符串,并创建一个具有正确扩展名的新字符串。 – RedX