读书人

从stdin读和从文件读,该如何处理

发布时间: 2012-03-28 15:40:03 作者: rapoo

从stdin读和从文件读
自己写的代码
是从stdin读和从文件读去单词,假设我argv[1]是那个文件名.

C/C++ code
FILE *fp;char buffer[BUFFER_SIZE];char c = 0;//下面是从文件读,没有问题,符合我的要求fp = fopen(argv[1], "r");while (readCh(fp, buffer, BUFFER_SIZE, 0)) {addCh(buffer);}printCh();fclose(fp);return EXIT_SUCCESS;//下面是从stdin读取,同样内容输出却不一样c = getc(stdin);while (c != EOF) {while (readCh(stdin, buffer, BUFFER_SIZE, 0))) {;addCh(buffer);printCh();}}return EXIT_SUCCESS;


C/C++ code
举个例子,读取的内容是"She's HoT":从文件读是:she 1s 1hot 1从stdin读是:he 1he 1s 1he 1s 1hot 1


为什么读取的结果不一样呢?
从文件读的可以达到我的预期目标,说明我readCh,addCh,printCh函数应该没错吧.
那我想从stdin读,代码应该怎么写呢?
还有一个小问题:while (c != EOF) 和while (c != '\0' && c != EOF)有区别吗?啥区别?

[解决办法]
//下面是从stdin读取,同样内容输出却不一样
c = getc(stdin);
while (c != EOF) {
while (readCh(stdin, buffer, BUFFER_SIZE, 0))) {
这里是读了两次啊,先用getc读取一个字符,然后判断是否为EOF, 不是的话下一次用readCh读一个单词.
这时已经跳过了第一个字符.

读书人网 >C语言

热点推荐