一道作业题,题目是这样的
我尝试用这个来输入p1:
for(i=0;*(p1+i)!='\0';i++){
scanf("%c",p1+i);
}
可是输入完字符串之后 回车 不能结束输入:
我查了一下资料,有人说是缓存区没有清空,让我加一个getchar(),或者用fflush(),可是都没有解决问题...
没办法,我改成了这样:
现在输入的问题解决了,输出又有问题了...
之前用scanf输入和 用 getchar 输入 整个程序输出的结果竟然不一样...
贴上前后完整的代码对比:
前后输出的结果对比:
总结一下我的问题是:
1.为什么scanf这样不能结束输入?应该怎么改?
2.我觉得scanf和之后改的getchar在这里功能应该是一样的,为什么程序最后输出的结果不一样?(两个输出的结果都不对,正确的应该是2)
谢谢大家!
你这个逻辑有点问题:
你想,如果我当次读到了'\n',但由于之后会i++,所以*(p1+i)已经是后面一位的字符了
PS:你这样写也就LINUX下GCC能运行了,在VS下肯定崩,指针都没分配空间就直接写入
你*(p1+i)!='\0'这样判断当然结束不了
从键盘输入的字符串先进入输入缓冲区,最后并不会补上\0,最后的字符是\n
我把'\0'改成了'\n'好像还是不行诶...