当我尝试在结构中存储和打印字符串时,我的代码出现问题。
我在这里提取了代码的基本部分:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct post
{
char name[30];
int tel;
struct post *next;
};
typedef struct post Post;
Post *head = NULL;
Post *current;
Post* CreateList(char tempname[30], int temptel);
Post* CreateList(char tempname[30], int temptel)
{
Post *ptr = (Post*)malloc(sizeof(Post));
strcpy(ptr->name, tempname);
ptr->tel = temptel;
ptr->next = NULL;
printf("\n creating list with headnode as [%s]\n",tempname);
head = current = ptr;
return ptr;
}
int main()
{
char tempname[30];
int temptel;
Post * ptr;
printf("[Name] [Number] = ");
scanf("%s %d", &tempname[30], &temptel);
CreateList(tempname, temptel);
}
在 main 中,您应该插入名称和编号,并在 CreateList 中创建链表的第一个节点。当我尝试打印带有名称的字符串时,会出现一些垃圾,但数字打印得很好。
我怀疑 tempname 并没有真正从 main 发送到 CreateList,即使我试图将它作为函数中的参数发送。我也尝试打印存储在结构中的名称:
printf("\n creating list with headnode as [%s]\n",ptr->name);
但这也失败了。
因此,当我尝试打印名称时出现问题,但由于我尝试了很多打印方法(使用 strcpy()、strncat()、strdup()),我开始怀疑我从未真正存储ptr->name 中的字符串。所以我要么打印错误,要么存储错误。
对于解决此问题的任何帮助或提示,我将不胜感激!提前致谢。