| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 515 人关注过本帖
标题:请大家帮帮忙~~~万分感谢
只看楼主 加入收藏
林墨哓
Rank: 2
等 级:论坛游民
帖 子:16
专家分:18
注 册:2010-11-6
结帖率:66.67%
收藏
已结贴  问题点数:30 回复次数:5 
请大家帮帮忙~~~万分感谢
利用提供的密码本(cipher.txt)进行查询,将输入的数码翻译成电文。要求:
⑴ 每四位数码代表一个汉字;
⑵ 密码以输入“.”作为结束。
要求:使用fgets和fputs函数。
密码本内容示例:
1234 你 1305 我 2407 在 1212 回 9900 看 7777 头 2219 晚 0807 归 2378 见 4444 明 6767 上 8888 点
输入内容为:1305 4444 2219 0807 .
我写的是:

#include "stdlib.h"
#include "iostream.h"
#include "stdio.h"
void main()
{
    FILE *fp;
    char a[40],b;
    int i=0,j,t;
    if((fp=fopen("cipher.txt","r+"))==NULL)
    {
        printf("can not open the file.\n");
        exit(0);
    }
    printf("输入内容:");
       scanf("%c",&a[i]);
    for(i=0;a[i]!='.';)
    {   i++;
        scanf("%c",&a[i]);
    }
    printf("密码翻译:");
    for(i=0;a[i]!='.';i++)
    {   
        b=fgetc(fp);
        if(b==a[i])
        {   j=i;
            for(;!feof(fp);b=fgetc(fp))
        {   if(a[i]==' ')
                  break;
            if(b!=a[i])
            {    for(t=0;t<5-i;t++)
                    b=fgetc(fp);
                i=j;
            }
            else
            i++;
        }
        }
        else
        {    for(t=0;t<5-i;t++)
                    b=fgetc(fp);
        }
        if(a[i]==' ')
        {      printf("%c  ",fgetc(fp));
              rewind(fp);
        }
    }
    printf("\n");
}
好像进入死循环了,不知道是不是这样的 。拜托大家了。。。谢谢

[ 本帖最后由 林墨哓 于 2011-1-3 23:38 编辑 ]
搜索更多相关主题的帖子: 汉字 
2011-01-03 23:34
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:5 
    printf("输入内容:");
       scanf("%c",&a[i]);
    for(i=0;a[i]!='.';)
    {   i++;
        scanf("%c",&a[i]);
    }
你这样写法有问题,详细一点,就是缓冲区怎样怎样,我建意最好用gets(a);

小代码,大智慧
2011-01-03 23:42
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
这个程序有点意思
2011-01-05 12:21
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
这对我来说.难了
2011-01-05 13:12
林墨哓
Rank: 2
等 级:论坛游民
帖 子:16
专家分:18
注 册:2010-11-6
收藏
得分:0 
回复 2楼 点线面
可是我试了一下 把后面都删掉 还可以正常运行 。。。不好意思 麻烦再 帮忙看一看。。。万分感谢~~~
2011-01-05 14:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:25 
文件读取的部分没写 ,你自己写吧.判断输出的部分写了一下,供您参考:
程序代码:
#include<stdio.h>
#include<string.h>
#define N 100

int main(void)
{
    const char *s="1234 你 1305 我 2407 在 1212 回 9900 看 7777 头 2219 晚 0807 归 2378 见 4444 明 6767 上 8888 点";
    const int m=4;
    char sn[N],*t;
    char t_t[5],*s_t;

    fgets(sn,N,stdin);
    t=sn;
    while(*t!='\0'&&*t!='.')
    {
        strncpy(t_t,t,m);
        t_t[4]=0;
        if((s_t=strstr(s,t_t)))
        {
            while(*s_t==' '||(*s_t>='0'&&*s_t<='9'))
            {
                s_t++;
            }
            while(*s_t!=' ')
            {
                printf("%c",*s_t);
                s_t++;
            }
        }
        t=t+4;
        while(*t==' ')
        {
            t++;
        }
    }
    puts("");

    return 0;

}
2011-01-05 14:55
快速回复:请大家帮帮忙~~~万分感谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020773 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved