写了一个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);//内存初始化

为什么我的C语言编程时没有错误但有警告,运行不了,这个实在不晓得为什 ...
编译没有错误只是说没有语法错误。 但你的程序可能有逻辑错误。例如死循环什么的。 所以 ,编译正确不代表程序就是对的。其实只要你学习半年左右就很少出语法错误的。更多的是逻辑错误。那是侯还要靠自己一步步的调试啊 看啊,想啊。

c语言中程序没有错误但执行时执行不了说应用程序错误
可能是编译的时候没错误但是有警告,你可以先看看先关闭工作区间,在编译一下,有可能是前一个程序的问题,当然,还有最大的可能就是程序本身没错误,是你的逻辑错误,导致执行不出来

c语言编程,编译无错,运行出错
1 你所谓的运行时问题,即栈溢出(stack overflow), 解决方法是使用c语言的malloc函数(相当于C++的new操作符)在堆上分配内存(当然最后根据输出文件的答案来看,你确实数据给大了)2 逻辑问题,如楼上各楼所说:s[i]=s[i-1]+A[i];而不是s[i]=s[i-1]+s[i];你中学数学知识都忘了。。。

C语言里程序编译无误但运行会弹出程序已停止运行是为什么
造成内存溢出的原因可能有:1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出...

求助:为什么每次我做c语言的时候都会这样,一般不是会指出哪里错了...
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\/VC98\/Bin”下面, 你可以到相应的路径下找到这个应用程序。方法一:因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、 ...

C语言程序老是显示错误但是没有错是什么原因
从代码上看没有问题。如果你是新安装的编译器,那么有可能是编译器配置问题。 (Error spawning cl.exe)也有可能是你工程中加了不止一个文件。(function main )建议你鼠标点在1 errors位置,然后鼠标滚轮向上滚动,查看具体错误信息。根据错误信息分析具体原因。

C语言程序,编译连接时都没问题但运行时出错了
一眼就能看出的错误 你的 char name[100];只是指针,没有分配内存,你把它做为二维数组用了 另外,字串数组不能只交换指针的 给你一个简单的参考(固定5个字串,非函数调用)include <stdio.h> include <string.h> int main(){ int i,j;char str[5][200],temp[200];printf("Please inout fiv...

c语言程序,编译没有问题组建报错,求大神指点
很可能是因为你的程序已经生成了目标文件 *.exe,并且在运行,此时如果你再链接就会报这个错误。你可以打开【任务管理器】-》【进程】,查看是否进程已经在运行,如果有,可以手动结束之

c语言运行出错什么原因
编译没有错是因为你写的mian函数的语句符合C规范,而链接有错误是因为C必须有一个入口函数或叫主函数main(),而你这里却没有。 White_MouseYBZ | 发布于2013-07-23 举报| 评论 0 0 如果是新手,不建议这么写,尤其以后和几个人合作,要知道猪一样的队友之可怕!for循环结构中,建议代码结构清晰,讲sum放在for...

c语言为什么我编译没错,运行的时候就有错误了 运行不了啊 没有豆了...
你的main拼写错了

相似回答