這裏的東西懶我颳起了,它使最低限度地使用標準庫函數(也許你想要的東西呢?):
#include <stdio.h>
#include <string.h>
void change_type(char* input, char* new_extension, int size)
{
char* output = input; // save pointer to input in case we need to append a dot and add at the end of input
while(*(++input) != '\0') // move pointer to final position
;
while(*(--input) != '.' && --size > 0) // start going backwards until we encounter a dot or we go back to the start
;
// if we've encountered a dot, let's replace the extension, otherwise let's append it to the original string
size == 0 ? strncat(output, new_extension, 4) : strncpy(input, new_extension, 4);
}
int main()
{
char input[10] = "file";
change_type(input, ".bff", sizeof(input));
printf("%s\n", input);
return 0;
}
它確實打印file.bff
。請注意,這可處理最多3個字符的擴展名。
非常感謝。我將它標記爲答案,因爲它完美地完成了這項工作,並且它還能夠處理文件路徑爲「/folder.1/myfile.data」的情況。我甚至沒有考慮過會導致一個問題,但肯定會。 – Scott