linux下c语言编程出现段错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下c语言编程出现段错误相关的知识,希望对你有一定的参考价值。
int savetofile(RGBQUAD *pRGB,int width,int height)
FILE *fp;
char filename[50]="NULL";
printf("%s","Please Enter the save filename.txt\n");
scanf("%s",&filename);
fp = fopen(filename,"wb");
char rgbRed[3],rgbGreen[3],rgbBlue[3];
char *flag,*flag_width,*flag_height;
for (int i=0;i< height ;i++)
for (int j=0;j< width;j++)
sprintf(flag_height,"%03d",i+1);
sprintf(flag_width,"%03d",j+1);
flag=flag_height;
strcat(flag,flag_width);
//printf("%s",flag);
sprintf(rgbRed,"%d",pRGB->rgbRed);
sprintf(rgbGreen,"%d",pRGB->rgbGreen);fprintf(fp,"%s %-s %-s %-s\n",flag,rgbRed,rgbGreen,rgbBlue);
//printf("%3d %3d %3d\r\n", pRGB->rgbRed,pRGB->rgbGreen,pRGB->rgbBlue);
printf("%s %-s %-s %-s\n", flag,rgbRed,rgbGreen,rgbBlue);
pRGB++;
输入文件名后直接显示段错误,不知道哪个指针或者其它地方有问题?
感谢二楼的回答,我前面filename定义的数组,我也试了,一样是段错误
主函数太长 贴出一部分
main()
.....
printf("保存到文本文件:\n");
savetofile(&dataOfBmp[0],width,height);
fclose(pfile);
if (bitInfoHead.biBitCount<24)
free(pRgb);
free(dataOfBmp);
free(pColorData);
printf("\n");
return 0;
.....
首先,你没有给出完整的程序,这个让大伙看起来确实不方便,因为没有main函数,可能踩内存的地方并不是这个函数本身,是main函数
其次说你的这个函数,貌似确实有点问题,但是由于没有完整的程序,我只说出我的理解,如果有错,直接忽视就好
sprintf(flag_height,"%03d",i+1);
sprintf(flag_width,"%03d",j+1);
我觉得问题出在这里,你查下 sprintf 的用法,第一个参数应该是一个字符串的首地址,你写的确实没有错,参数给入的是一个地址flag_height,但是纵观你的程序,你并没有给这个指针赋值,程序运行到这里,估计在默认创建指针的时候应该赋值为NULL(貌似根据编译器不同而有不同),那个寻址后报出段错误,也是意料之中了
由于没有你完整的代码,不知道你要做什么,修改意见不好提
给出个人意见,仅供参考
如果要打印flag_height中的值,首先应该给flag_height指针分配一片内存,使用malloc函数,其次在向内从中写入值,然后调用sprintf,就应该没有问题了 参考技术A scanf("%s",&filename);
改成
scanf("%s",filename);
再试试 参考技术B 请写出完整程序。
linux安装minicom错误,求指点。
fedora18,下载minicom放在/usr下,解压后,
#cd minicom-2.4
#./configure
#make 就提示:
window.c:28:21: 致命错误:termcap.h:没有那个文件或目录
编译中断。
make[2]: *** [window.o] 错误 1
make[2]: 离开目录“/usr/minicom-2.4/src”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/usr/minicom-2.4”
make: *** [all] 错误 2
怎么解决呢?
直接用rpm -Uvh minicom-* 安装就行了。 参考技术B lz看这里
http://www.eefocus.com/mars_seu/blog/10-05/189567_82e22.html本回答被提问者采纳
以上是关于linux下c语言编程出现段错误的主要内容,如果未能解决你的问题,请参考以下文章
linux中执行c语言程序,段错误是怎么回事啊??谢谢!!!
C语言 文件方面 段错误 核心已转储 以及字符串查找删除的问题