gpt4 book ai didi

c - 字符串和指针的问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:00 25 4
gpt4 key购买 nike

我有一个字符串需要传递给如下函数。

scanf("%s%d",&name,&telno);
addatend(telno,name);

在哪里

char name[MAX];

我收到以下警告:

warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Wformat]

我确实尝试做一些改变,比如多一个 char 指针并指向 name。但警告仍然存在。

在函数中我有strcpy

strcpy(addnode->name,name1);

这是将 main 中的 name 复制到结构 addnode 中的 name。但是这条线有段错误。

我尝试检查夹板(在这一行没有任何问题)和 valgrind,但无法识别我的错误。于是来这里求助。提前致谢..

代码:

typedef struct Mystruct{
char *name;
int telno;
struct Mystruct *nextp;
}data;

void addatend(int telno1, char* name1)
{
data *addnode, *previousnode;
addnode = malloc (sizeof(data));

if(addnode == NULL)
{
printf("Memory allocation failed...Exiting");
exit(0);
}

strcpy(addnode->name,name1); //error Part of the code.

最佳答案

当使用 scanf 读取字符串时,数组作为指针传递给函数,因此您不需要寻址运算符 & .


关于你的第二个问题......你也需要为你复制到的目的地分配内存。要么使用 malloc再次(使用 strlen(...) + 1+1 作为字符串终止符)在 strcpy 之前, 或使用 strdup它分配并复制字符串:

addnode->name = strdup(name1);

关于c - 字符串和指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com