我原本输入一串字符,会输出一串大写字母,然后插入光标跟在大写字母后面,但后来不知怎么着插入光标变成另起一行了,我想知道原来光标跟在大写字母后面的程序是什么样子的。
#include<stdio.h>
main()
{
char c;
while(c!=EOF)
{
c=getchar();
if(c>='a'&&c<='z')
{c=c-'a'+'A';
printf("%c",c);}
else
{printf("%c",c);}
}
}
一共改了2个小点。印象里,回车符是23,是10+13,回车键实际是回车(光标到行首)+换行
#include<stdio.h>
main()
{
char c;
while((c=getchar())!=10) /*这里改了一下 输入的同时判定是否循环*/
{ /*c=getchar(); 被移到while()条件中*/
if(c>='a'&&c<='z')
{c=c-'a'+'A';
printf("%c",c);}
else
{printf("%c",c);}
}
scanf("%d"); /*纯dos中调试不用这一行。主要用于停在输出屏幕*/
}
把回车符也读了……应该是这样。我感觉我的编译器有点问题,getchar似乎也会把回车读取,导致循环次数不对,请问能解决吗?
追答首先函数在读取标准输入这个文件描述符时是带缓冲的输入,带缓冲的意思就是说输入的字符不会马上被读取而是与上回车后再读取。关于循环次数的问题这个应该没有办法避免不读取,因为回车也是一个正确的字符,但是要使循环次数正确完全可以加判断,如果是回车字符的话就不增加循环计数。
本回答被提问者和网友采纳程序是可以正常运行的
追答我是说原来光标跟在大写字母后面好像用标准库实现不了