当前位置: 技术问答>linux和unix
我这个程序是实现非法中文字符的消除,在linux 下运行,能转换成功,可最后提醒有段错误。
来源: 互联网 发布时间:2016-11-29
本文导语: 我在windows vc下跑都没问题,移植到装的linux虚拟机下,最后也能成功,但是会提醒段错误。 怎么消除这个段错误呢? 求高人在linux下帮我跑一下,我实在找不出bug在什么地方。 程序如下: #include #include #include in...
我在windows vc下跑都没问题,移植到装的linux虚拟机下,最后也能成功,但是会提醒段错误。
怎么消除这个段错误呢?
求高人在linux下帮我跑一下,我实在找不出bug在什么地方。
程序如下:
#include
#include
#include
int main()
{
FILE *fp;
FILE *temp=NULL;
unsigned ch;
unsigned k,t;
k=32;
if ( (fp = fopen("a.dsc", "r+")) == NULL) {//r+打开要转换的文件
perror("Open file file2n");
exit(1);
}
if(!(temp = tmpfile()))//创建用于中转的临时文件
{
printf("临时文件创建失败!n");
return 0;
}
//对字节逐个检测,然后写入临时文件。
while((ch=fgetc(fp))!=EOF)
{
//操作占一个字节的字符,即ascii字符。
if(isascii(ch))//第一个字节为ascii字符的,自动写入临时文件。
{
fputc(ch,temp);
continue;
}
//操作占两个字节的字符。
//第一个字节不是ascii字符的,就要检测两个字节
if(ch>=161&&ch=161&&ch
怎么消除这个段错误呢?
求高人在linux下帮我跑一下,我实在找不出bug在什么地方。
程序如下:
#include
#include
#include
int main()
{
FILE *fp;
FILE *temp=NULL;
unsigned ch;
unsigned k,t;
k=32;
if ( (fp = fopen("a.dsc", "r+")) == NULL) {//r+打开要转换的文件
perror("Open file file2n");
exit(1);
}
if(!(temp = tmpfile()))//创建用于中转的临时文件
{
printf("临时文件创建失败!n");
return 0;
}
//对字节逐个检测,然后写入临时文件。
while((ch=fgetc(fp))!=EOF)
{
//操作占一个字节的字符,即ascii字符。
if(isascii(ch))//第一个字节为ascii字符的,自动写入临时文件。
{
fputc(ch,temp);
continue;
}
//操作占两个字节的字符。
//第一个字节不是ascii字符的,就要检测两个字节
if(ch>=161&&ch=161&&ch