写了一个c语言程序,运行老是出错,不知道是哪里有问题,编译的时候也没有错误,愿大佬帮我解决

voidprinta(structnapkin*dp);structnapkin{char*Mark;intcount;intprice;};intmain(){stru... void printa(struct napkin *dp);
struct napkin
{
char *Mark;
int count;
int price;
};
int main()
{
struct napkin a;
scanf("%s",&a.Mark);
scanf("%d",&a.count);
scanf("%d",&a.price);
printa(&a);
return 0;
}
void printa(struct napkin *dp)
{
printf("%s\n",dp->Mark);
printf("%d\n",dp->count);
printf("%d\n",dp->price);
}
展开
 我来答
琴海情殇
2019-08-01 · 超过14用户采纳过TA的回答
知道答主
回答量:27
采纳率:53%
帮助的人:14万
展开全部

将输出语句printf("%s\n",dp->Mark)

改为

大维
2019-08-01 · 郑州西亚斯学院副教授
大维
郑州西亚斯学院副教授
采纳数:111 获赞数:366
发表论文14篇。编写教材5部。擅长微控制器应用技术和网络技术

向TA提问 私信TA
展开全部
你粘到这上面的程序 不完整! 结构体要先声明 并且你的第一个元素Mark,最好要指定大小!
#include <stdio.h>
struct napkin
{
char Mark[10];
int count;
int price;
};
void printa(struct napkin *dp);
int main()
{
struct napkin a;
scanf("%s",&a.Mark);

scanf("%d",&a.count);
scanf("%d",&a.price);
printa(&a);
while(1);
return 0;
}
void printa(struct napkin *dp)
{
printf("%s\n",dp->Mark);
printf("%d\n",dp->count);
printf("%d\n",dp->price);
}
追问
第四行能不能不要数组,换成指针
追答
如果换成指针的话! 最好要给他分配一个空间! 否则有可能会出错!
a.Mark = (char*)malloc(sizeof(char)*5);//内存初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式