| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 385 人关注过本帖
标题:为什么回车了就三行,不回车就两行???
收藏  订阅  推荐  打印
小样儿
Rank: 1
等级:新手上路
帖子:9
积分:214
注册:2008-7-12
为什么回车了就三行,不回车就两行???

一下是我编写的密码破解输出程序:为什么in文件最有回车后,out文件就出现三行???如果in最后不回车,out文件就两行?请大家帮我出出意见吧,我已经想了一天啦,55555555555555
目标
设计一个程序实现 “密码破译”功能
具体要求
完成一个满足目标功能要求的可以独立运行的程序
程序读入名为02.in的文本文件获取输入数据
程序将处理结果输出到02.out的文本文件中

已知条件
密码是由0至6这7个数字以一定的顺序组成;
密码是由时刻决定的,已知0时刻的密码是0123456,每个文件的密码由其发出时刻决定;
第k(k>0)时刻的密码是由第k-1时刻的密码以一定规律变化而得到的。

#include"stdio.h"
#include"string.h"
static int c[7];
main()
{ FILE *infp,*outfp;
char a[9],b[9],n[9],e[9],d[9]="0123456/n";
int i,j,N;
infp=fopen("02.in","r");  (打开文件02.in)
outfp=fopen("02.out","w");  (打开02.out)
while(feof(infp)==0)
{
    fgets(n,9,infp); (读入时刻数,如4和9)
    fgets(a,9,infp); (读入第二行和第五行)
    fgets(b,9,infp);  (读入第三行和第六行)
    N=n[0]-48;          (时刻=减去0的阿斯科码)
            
             for(i=0;i<7;i++)   (循环求出编码规则赋给C)
             for(j=0;j<7;j++)
             if(b[i]==a[j])
             c[i]=j;  

              for(j=0;j<N;j++)
                 {for(i=0;i<7;i++)
                  e[i]=d[c[i]];
                  strcpy(d,e);   (求出密码的循环部分)
                  }
     fputs(e,outfp);
     putc('\n',outfp);
     strcpy(d,"0123456\n");
    }
     fclose(infp);
     fclose(outfp);
}


我的in文件如下:
4
jciu098
80jicu9
9
23_Zljk
Zlk_3j2

[ 本帖最后由 小样儿 于 2008-7-13 16:40 编辑 ]
2008-7-13 16:27
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5

你的这个程序比较强,加点注释吧!容易理解!
你的问题无法回答!我新手,不好意思!

编程小菜
2008-7-13 16:35
小样儿
Rank: 1
等级:新手上路
帖子:9
积分:214
注册:2008-7-12
回复 2# 独孤小梦 的帖子

改好了
2008-7-13 16:41
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5

char a[9],b[9],n[9],e[9],d[9]="0123456/n";
我觉得你这里不应该这么赋值!而且我编译时这行出错,是\N还是/N?
    fgets(n,9,infp); (读入时刻数,如4和9)
    fgets(a,9,infp); (读入第二行和第五行)
    fgets(b,9,infp);  (读入第三行和第六行)
这里都是一个意思吧!第一个也是读入第几行和第几行吧!

编程小菜
2008-7-13 16:46
小样儿
Rank: 1
等级:新手上路
帖子:9
积分:214
注册:2008-7-12
回复 4# 独孤小梦 的帖子

是\n
这是循环啊,所以第一次读
4(给n)
jciu098(给a)
80jicu9给(给b),然后9以后的同样道理
但是out输出就是有问题啊,怎么办怎么办?5555555
2008-7-13 16:53
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5

大概读入了回车,然后循环过以后就出来了!
没有回车的话,putc('\n',outfp);
     strcpy(d,"0123456\n");
这里有两个\N!

编程小菜
2008-7-13 18:16
小样儿
Rank: 1
等级:新手上路
帖子:9
积分:214
注册:2008-7-12
回复 6# 独孤小梦 的帖子

那我应该怎么改?
2008-7-13 18:36
水中无月
Rank: 2
等级:注册会员
帖子:186
积分:1992
注册:2008-6-17

好象回车是两个字符哎,即“\r\n”(一个回车,一个换行)

十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.
2008-7-13 18:54
小样儿
Rank: 1
等级:新手上路
帖子:9
积分:214
注册:2008-7-12
回复 8# 水中无月 的帖子

还是不行……55555555
2008-7-13 20:47
水中无月
Rank: 2
等级:注册会员
帖子:186
积分:1992
注册:2008-6-17

那你可以先把最后的回车去掉再处理呀
(或许是个笨方法,但是却很有效

十里平湖霜满天,寸寸青丝愁华年,对月形单望相互,只羡鸳鸯不羡仙.
2008-7-13 20:58
共有 384 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.058869 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved