C语言写入文件会莫名其妙的换行??!

Mair123 2012-03-05 06:30:02
是这样子的,C语言程序实现把一个文件中的“edge[source x target y]”写入另一个文件并且转换成“a(x,y)=1;”形式(其中x,y是数字),我的核心代码如下(虽然写的有点儿长,但是其实不难,多谢各位大大阅读!)

while(num!=EOF)
{

if(num=='s')
{
num=fgetc(inFile);
if(num=='o')
{
num=fgetc(inFile);
if(num=='u')
{
num=fgetc(inFile);
if(num=='r')
{
num=fgetc(inFile);
if(num=='c')
{
num=fgetc(inFile);
if(num=='e')
{
//判断在target之后
fgetc(inFile);
//因为target后有以为空格所以再读一位
num=fgetc(inFile);
fputs("a(",outFile);
fputc(num,outFile);
num=fgetc(inFile);
while(num!=' ')//不一定是一位数,还有可能是多位数,判断一下
{

fputc(num,outFile);
num=fgetc(inFile);
}
fputc(',',outFile);

}
}
}
}
}
}
if(num=='t')
{
num=fgetc(inFile);
if(num=='a')
{
num=fgetc(inFile);

if(num=='r')
{
num=fgetc(inFile);

if(num=='g')
{
num=fgetc(inFile);

if(num=='e')
{
num=fgetc(inFile);

if(num=='t')
{
//判断在target后
fgetc(inFile);
//同样因为空格多读一位
num=fgetc(inFile);

fputc(num,outFile);
num=fgetc(inFile);

while(num!=' ')
{

fputc(num,outFile);
num=fgetc(inFile);

}
fputs(")=1;",outFile);
fprintf(outFile,"\n");
}
}
}
}
}
}


num=fgetc(inFile);
}



本来准备一行“a(x,y)=1;”之后换行,但结果却是这样的...

a(9
,1
)=1;
a(9
,3
)=1;
a(10
,3
)=1;
a(11
,1
)=1;
就是在“,”前会自动换行???
请问这是为什么?我把fputc,fprintf都试了也不行...都试了一天了...
求问求问,谢谢各位!
...全文
512 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mair123 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuyich123 的回复:]
你的文件里是不是有换行符啊?
[/Quote]
向大家汇报新情况~亲你说的灰常对,的确是因为有换行符,但是我不会用while判断换行符,于是我就用了一句...
while((num=='1')||(num=='2')||(num=='3')||(num=='4')||(num=='5')||(num=='6')||(num=='7')||(num=='8')||(num=='9')||(num=='0'))
然后它就好啦~

我知道我的这句话很白痴...但是谢谢你~
Mair123 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuyich123 的回复:]
你的文件里是不是有换行符啊?
[/Quote]
我的文件之前是一个.gml的格式,用记事本打开没有换行符,但是我把记事本的内容黏贴到word里的确每个数字之后都有回车...
那C语言里换行符怎么来判断,就是while(num!=换行符),这个换行符用什么代替?
那请问我有什么办法不让它换行吗,比如移动到上一行?
(图省事儿就和上面问的一样了,别介意~)
Mair123 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dengcqw 的回复:]
没看出什么来。可能是输入文件有问题 。 y后面不是] 吗 有空格没? 换行符不是空格。可能是 把每行的换行符读出来了、
[/Quote]
我的文件之前是一个.gml的格式,用记事本打开没有换行符,但是我把记事本的内容黏贴到word里的确每个数字之后都有回车...
那C语言里换行符怎么来判断,就是while(num!=换行符),这个换行符用什么代替?
那请问我有什么办法不让它换行吗,比如移动到上一行?
dengcqw 2012-03-05
  • 打赏
  • 举报
回复
没看出什么来。可能是输入文件有问题 。 y后面不是] 吗 有空格没? 换行符不是空格。可能是 把每行的换行符读出来了、
尘缘udbwcso 2012-03-05
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
void fileOperate()
{
FILE *out, *in;
char str[15];
int x, y;
out = fopen("out.txt", "r");
in = fopen("in.txt", "w");
if(out == NULL || in == NULL)
exit(1);
while(1)
{
fscanf(out, "%s%d%s%d]", str, &x, str, &y);
if(feof(out))
break;
fprintf(in, "a(%d, %d)=1\n", x, y);
}
fclose(out);
fclose(in);
}
int main()
{
fileOperate();
system("pause");
return 0;
}

liuyich123 2012-03-05
  • 打赏
  • 举报
回复
你的文件里是不是有换行符啊?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧