【发布时间】:2015-05-01 09:13:27
【问题描述】:
我必须用 C 语言开发一个可以有两种输入的程序。
- 给它一个字符串(我假设这个文件名
- 通过从某些文件中读取数据。
我必须对其中的字符进行一些检查并将它们存储在一个数组中。但我想先学习如何使用标准输入中的getc()。
我的第一个问题是,我可以在这两种情况下都使用getc() 吗?
我想遍历提要行/文件中的每个字符,并且我假设代码看起来像这样:
char Array1[];
char charHolder;
//If the file/feed has chars (!NULL), execute
if ((charHolder = getchar())!=NULL){
//Do something
//Do some more
//Finally append to Array1
Array1[] = charHolder;
}
上面的代码可能存在一些问题。我想知道这种插入在 C 中是否有效(没有指定索引,它只会将值推到数组末尾)。另外,我从http://beej.us/guide/bgc/output/html/multipage/getc.html 读到getc(stdin) 和getchar() 是完全等价的。我只是想仔细检查一下这确实是真的,并且任何一个函数都适用于我必须读取数据(从文件中并为我的程序提供字符串)的两种情况。
另外,我想知道如何实现从多个文件中读取字符。假设我的程序是否作为 programName file1 file2 执行。
感谢您的宝贵时间和帮助!
干杯!
编辑 1:
我还想知道如何检查字符何时从文件/字符串提要结束。两种情况我都应该使用 EOF 吗?
例子:
while ((charHolder = getchar()) != EOF){
//code
}
【问题讨论】:
-
如果
charHolder是int类型,while ((charHolder = getchar()) != EOF){很好。getchar()返回一个在unsigned char和EOF范围内的值。这些通常有 257 个不同的值不能唯一地存储在char中。