我有一个字符串,我需要传递给像下面这样的函数。字符串和指针的问题
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
到name
在结构addnode
。但是这条线有分段错误。
我试图检查夹板(这条线没有任何问题)和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.
好,谢谢。我清除了警告但seg故障仍在。你想看完整的代码吗? – Shash
@Shash你是否为'addnode' _and_'addnode-> name'分配了内存? –
@Shash请编辑您的问题添加该代码,以及'数据'结构的定义。 –