c - 无法复制字符串

标签 c

我在调试器中设置了这些变量:

//调试器值不是代码

相对路径 = "./bin/Debug"

strlen(相对路径)=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);

我得到了相同的结果

最佳答案

应该行

struct dirs_later *new_dir = malloc(sizeof(struct dirs_later*)); 

成为

struct dirs_later *new_dir = malloc(sizeof(struct dirs_later)); 

因为您想在堆上为结构创建空间,而不仅仅是一个指针。

关于c - 无法复制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9474702/

相关文章:

c - (MS Visual Studio) c 中按成员名称初始化 const typedef 结构

c - 更改数据包以使用 AEH/ESP 保护它

c - 对我检查素数的C程序的一些疑问

c - 了解快速平方根反比中的指针语法

c++ - _CrtSetAllocHook - 空文件名和行号参数

统计用户在函数中不带参数输入大于0的次数。 C语言编程

c - Coccinelle 中的指针问题

c - 按值传递指针或按引用传递指针是否相同

c - .bss 与 .data : static q32 vs static int

c - 缺少在 Debian Etch 上定义的 IP_MTU 套接字选项?