| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1435 人关注过本帖, 1 人收藏
标题:关于重定向的一个程序,不知道怎么运行的,有没有大佬讲解一下该程序怎么输 ...
只看楼主 加入收藏
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
结帖率:75%
收藏(1)
已结贴  问题点数:10 回复次数:7 
关于重定向的一个程序,不知道怎么运行的,有没有大佬讲解一下该程序怎么输出
程序代码:
#include <stdio.h>

int main(void)
{

 int i;

 for(i=0; getchar() != EOF; i++);

 printf("There are %d char",i);

 return 0;
}

我输入了几个字符,最后输入EOF,没有输出,不知道是程序的问题,还是我的问题

[此贴子已经被作者于2017-2-10 16:06编辑过]

搜索更多相关主题的帖子: 定向 
2017-02-10 15:53
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
收藏
得分:4 
你从stdin输入字符EOF相当于3个字符,而getchar()是逐个读取,在这里是读取完后丢弃,因此不能与EOF做判断

其实getchar()本身定义为宏:
#define getchar() getc(stdin)

要做判断你可以这样:
if(getc(fp)!=EOF)
...

程序代码:
#include <stdio.h>

int main(void)
{
    int i;
    char ch;
    FILE *fp;

    if ((fp = fopen("a.txt", "r") )== NULL)
    {
        exit(0);
    }

    for (i = 0; (getc(fp)) != EOF; i++)
        ;
    printf("There are %d char", i);
    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-2-10 16:29编辑过]

2017-02-10 16:24
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:4 
重定向的话。

我说下windows的方法,打开cmd,输入你程序的名字 <你要输入的文件名字

例如你的程序叫abc.exe,你要输入的文件名字叫words.txt

那么在cmd输入以下命令  abc.exe < words.txt

PS : 别漏了输入你的程序和文件的准确目录。

< 输入重定向
> 输出重定向
>> 输出,向已有的内容后面追加内容

这两个符号可以组合起来用,例如:你的程序名字叫abc.exe,输入的文件叫words.txt,输出的文件叫word1.txt,你可以这样:abc.exe < words.txt > word1.txt

[此贴子已经被作者于2017-2-10 17:47编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-10 17:27
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
收藏
得分:0 
回复 3楼 renkejun1942
这就清楚了 ,谢谢
2017-02-10 17:37
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
收藏
得分:0 
回复 2楼 yanzy
你的程序实在什么软件编译的
2017-02-10 17:45
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 5楼 蹴鞠者
我符号打错了,

< 输入重定向。

> 输出重定向

>> 这也是输出重定向,但它的用处是想已有的内容后面追加内容

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-10 17:47
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
收藏
得分:0 
回复 5楼 蹴鞠者
VS 2015
2017-02-10 18:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
for(i=0; getchar() != EOF; i++);

这个循环的终止条件是
输入一系列字符后 然后 回车 然后 按 CTRL+Z ==EOF  然后回车

DO IT YOURSELF !
2017-02-11 09:35
快速回复:关于重定向的一个程序,不知道怎么运行的,有没有大佬讲解一下该程序怎 ...
数据加载中...
 
   



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

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