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

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);
}

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

改为

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-01
你粘到这上面的程序 不完整! 结构体要先声明 并且你的第一个元素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);//内存初始化

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网