特定のディレクトリで .txt ファイルを開くプログラムを作成しています。問題のディレクトリ内のファイルのすべての絶対パスを含む配列があり、ファイルの名前を抽出して返す関数を作成しています。関数は次のように記述されます。
char *name(char *string) {
int i = strlen(string);
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
上記の関数はセグメンテーション違反エラーを出していますが、次の行を追加すると "int j = 0;" になります。aux の宣言の前に間違いがなくなり、新しい作業コードは
char *name(char *string) {
int i = strlen(string);
int j = 0;
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
入力: C:\test\a.txt
出力: a.txt
「int j = 0;」を追加する理由 問題を解決しますか?この矛盾が後で大きな問題につながるかどうかわからないので、私はそれで立ち往生して続行できません。文字列をコピーする独自の関数を作成することを考えていますが、その前にそれを本当に理解したいですエラー。