各位前辈,我的问题是,当我调试下面的c程序的时候,有一个不懂的地方在于: 右边输入了I am a student^Z(ctrl+z),但是当whilie循环中的c=getchar()在读完了c=t(最后一个字符t)之后,getchar就不继续读取了,即getchar不继续读取^Z了,也即while循环不退出,这是怎么回事。请各位大神解答,谢谢。。
#include <stdio.h> #include <malloc.h>
int getline(char *s, char lim) { int i, c;
i = 0;
while (--lim > 0 && (c = getchar()) != EOF && c != '\n')
s[i++] = c;
if(c == '\n')
s[i++] = '\n';
s[i] = '\0';
return i;
}
int main() { char s = (char)malloc(sizeof(char) * 100);
printf("%4d", getline(s, 100));
}
我对你无比崇拜。。。我只会对文件(包括文本)用fread 读取到buf中,用二进制方式直接读取。getchar这么高大上的东西,不会。哈。######刚才问了师兄, 说是EOF作为我向终端说明,我操作完成的标识符,getchar()是不识别的,getchar()识别^Z的情况是: ^Z在换行符之后, 即我数据输入完成。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。