0

「/documents/filename.txt」のような文字列が与えられた場合、新しい文字列「/documents/filename_out.txt」を作成する必要があります。新しい文字列は、ファイル名に _out を追加するだけで、.txt サフィックスは保持します。

#include <stdio.h>
#include <string.h>

int main(){;
    char fileName[80];
    printf("Please enter filename: ");
    scanf("%s", fileName);
    char outName[];

    printf("Outputname: %s\n", outName);
}

たとえば、文字列から最後の 4 文字 (.txt) を削除し、文字列に「_out.txt」を追加する方法はありますか?

前もって感謝します!

4

5 に答える 5

1
// strlen(".txt") = 4    
strcpy(filename + strlen(filename) - 4, "_out.txt");

バッファーが余分な 4 文字を格納するのに十分な大きさであることを確認する必要があります。

于 2013-05-18T03:16:57.480 に答える
0

関数strtokを使用して入力をトークン化し、各トークンの間に _out を使用して再度連結します。

#include <stdio.h>
#include <string.h>

int main(){;
char fileName[80];
printf("Please enter filename: ");
scanf("%s", fileName);
char outName[80];
char *name, *type;

name = strtok(fileName, ".");
type = strtok(NULL, ".");

snprintf(outName, 80, "%s_out.%s", name, type);
outName[79] ='\0';


printf("Outputname: %s\n", outName);
}

PS。私はあなたの入力が常に正しいと仮定しているので、NULL 文字で終了することによって outName が常に正しい文字列になることを確認することを除いて、何もチェックしていません。

于 2013-05-18T03:13:07.463 に答える