我有這些變量在我的調試器設置:無法複製串
//調試值不代碼
RELATIVE_PATH = 「./bin/Debug」
的strlen(RELATIVE_PATH)= 11
RELATIVE_PATH [11] = 0 '\ 000' //如圖Eclipse調試器
在我的代碼然後執行:
//**My Code**
struct dirs_later {
const char *findme;
struct dirent *dptr;
struct stat this_lstat;
char *relative_path;
const char *type_str;
DIR * dir;
};
....
struct dirs_later *new_dir = malloc(sizeof(struct dirs_later*));
...
char *relative_path2 = strdup(relative_path);
if (NULL != new_dir) {
new_dir->findme = findme;
new_dir->dptr = dptr;
new_dir->this_lstat = *this_lstat;
new_dir->relative_path = relative_path2;
new_dir->type_str = type_str;
}
但是然後調試器顯示在new_dir-> relative_path = relative_path2之後。然後在調試器:
//調試值不代碼
relative_path2 = 「& \ 275 \ 001」 和
的strlen(relative_path2)= 3
我也是在我的代碼嘗試這個而不是:
//**My Code**
char *relative_path2 = malloc(strlen(relative_path) + 1 * sizeof(char));
//check for NULL
strcpy(relative_path2, relative_path);
,我也得到相同的結果
不知道你想用'relative_path [11] = \ 0'來做什麼......字符串已經被終止了,我相信這會影響現有的空終止符後的字節*。 – 2012-02-28 00:44:21
'sizeof(char)'是1.爲什麼寫它? – 2012-02-28 00:44:39
如果'strlen(str)== 10',那麼'str [10]'應該是NULL,而不是'str [11]'。 – 2012-02-28 00:44:48