LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1641|回复: 2

码表排列如何转换???

[复制链接]
发表于 2007-10-18 01:42:33 | 显示全部楼层 |阅读模式
zzzu 针扎   
zzzx 沾沾自喜 只争朝夕   
zzzy 种族主义   
zzzz 自作主张 重中之重   

    如何将上面的格式转换为下面的格式:   

zzzu 针扎   
zzzx 沾沾自喜   
zzzx 只争朝夕   
zzzy 种族主义   
zzzz 自作主张   
zzzz 重中之重   


我写了一个程序,但是出错了,谁帮我看看错在哪里

程序的功能:码表转换   
例如:   
zzzu 针扎   
zzzx 沾沾自喜 只争朝夕   
zzzy 种族主义   
zzzz 自作主张 重中之重   

    将上面的格式转换为下面的格式:   
zzzu 针扎   
zzzx 沾沾自喜   
zzzx 只争朝夕   
zzzy 种族主义   
zzzz 自作主张   
zzzz 重中之重   

    我的程序通过编译,名字为to.exe ,但使用 to.exe    <a.txt    >b.txt   
    运行后得到的文本文件内容不变,还是:   
zzzu 针扎   
zzzx 沾沾自喜 只争朝夕   
zzzy 种族主义   
zzzz 自作主张 重中之重   
    并且之后好像还多了无数个回车符,文本文件大小一直不停地增加,程序死了,似乎是无法退出,只能强制关闭。   
    我是初学者,请问这个程序到底是哪里写错了,我知道我的结构不好,熟练的程序员可以写出更好的程序,这个程序很短,恳求有心的高手帮我指出错误,如能教我或帮我将此程序改正,小弟不胜感激!!!   

程序如下:   
#include    <stdio.h   >   
main()   
{   
    int i,c,temp[7];   
    for (i = 0;i    < 7;i++)   
    temp = 0;   

no1:   
    temp[0] = c = getchar();   
    if (c == EOF)   
    goto end;   

    i = 1;   
    do   
    {   
    temp = c = getchar();   
    i++;   
    }   
    while (c !=    '    ');   
    temp =    '\0   ';   

no2:   
    i = 0;   
    while (temp !=    '\0   ')   
    {   
    c = temp;   
    putchar(c);   
    i++;   
    }   

    c = getchar();   
    while (c !=    '    '  ¦ ¦ c !=    '\t   '  ¦ ¦ c !=    '\n   '  ¦ ¦ c != EOF)   
    {   
    putchar(c);   
    c = getchar();   
    }   
    i =    '\n   ';   
    putchar(i);   

    if (c ==    '    '  ¦ ¦ c ==    '\t   ') goto no2;   
    if (c ==    '\n   ') goto no1;   

end:   
    i = EOF;   
    putchar(i);   
    return 0;   
}
发表于 2007-10-18 08:05:35 | 显示全部楼层
  你没debug step by step吗?
回复 支持 反对

使用道具 举报

发表于 2007-10-23 13:39:50 | 显示全部楼层
用python或用perl都会简单很多的.
事实上只要支持正则表达式都会容易很多.
用c的话我不知道正则表达式要怎么弄,不过建议你不要用goto语句, 读文件用标准库函数.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表