次のコードがあり、作成中のプログラムで作業する「パス」の文字列を編集します。
私の問題は、コードが機能することですが、理由がわからないか、より明確にするために、 に追加strcat
できる理由がわかりません。すべてが動的文字列を使用しているため、そうする必要はありません。しかし、私がそれをしようとすると、失敗しますsrc
dest
realloc dest
realloc
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
char *src = argv[1];
char *dest = argv[2];
char *d_basedir;
int s_length = strlen(src);
printf("dest starts as %s: length %zu\n", dest, strlen(dest));
printf("src starts as %s: length %zd\n", src, strlen(src));
if(!(src[s_length - 1] == '/')) {
if((d_basedir = strrchr(src, '/')+1) != NULL) {
printf("basedir is %s\n", d_basedir);
strcat(dest, d_basedir);
printf("dest changed to %s: length %zd\n", dest, strlen(dest));
}
}
printf("dest ends as %s: length %zd\n", dest, strlen(dest));
return 0;
}