char配列は、出力からのCの最初のループの後、いくつかのガベージ
while((entry = readdir(dir_pointer)) != NULL)
{
char *fullpath = malloc(dir_len + strlen(entry->d_name) + 2);
printf("\nfullpath: %s\n", fullpath);
strcat(fullpath, dir); // concatenate file directory;
printf("\ndir: %s\n",fullpath);
strcat(fullpath, "/"); // concatenate "/";
strcat(fullpath, entry->d_name); // concatenate filename;
printf("\nfullpath: %s\n", fullpath); // print to check;
free(fullpath);
// close the file;
}
を有し、ファイルの完全なパスが正しいループが正常に動作している間の最初のラウンドです。
しかし、第二ラウンドのために、ファイルの完全なパスは、いくつかのゴミが含まれ、
はどこごみから来たのでしょうか?
これを解決するには、memset()を試しましたが、動作しませんでした。
'strcat()'を呼び出すと、新しく 'malloc()'に初期化されていない配列が追加されます...これは、nullバイトで始まる場合すべて保証されています)。 – Dmitri
簡単な修正は、最初の 'strcat()'を 'strcpy()'に変更することです(また、その未初期化文字列を印刷しようとする前に 'printf()'を取り除くだけです)。 – Dmitri
@上記のどれも: 'snprintf()'。 –