【发布时间】:2016-10-17 00:38:12
【问题描述】:
所以我目前正在尝试逐字符读取输入文件,并尝试查看何时出现新行。我得到所有字符都很好,但是如果我将它转换为 int,我得到的不是新行的 '\n' 或 -97。这是我的代码,我使用的是 VS 2015。
int main(void) {
FILE *fp;
fp = open_input_file();
if (fp != 0) {
char ch = read_character(fp);
int d = (int)ch;
while (ch != EOF) {
printf("%d\n", d);
ch = read_character(fp);
d = (int)ch;
}
}
getch();
return 0;
}
char read_character(FILE *infile) {
int c;
c = getc(infile);
return (char) c;
}
【问题讨论】:
-
你想问什么?你能说得清楚一点吗?
-
您一直在与
int之间进行投射。只需坚持int,由getc返回,函数类型也是如此。 -
三思而后行,这可能意味着您需要在这里使用铸造锤:
return (char) c;。 C 语言中的一般经验法则:如果您发现自己面临强制转换的需要,那么您要么是垃圾,要么是聪明人。通常你只需要在非常罕见的情况下施放。 -
getc()有意返回int。只是不要忽略这一点。 -
1) 确保在
main()中使用之前声明/定义char read_character(FILE *infile)。 2)发布输入文件的内容。 3) 发布输出可见