#include <conio.h>
#include <string.h>
int main(int argc, char** argv)
{
char i=0;
int j=0;
char chNameInput[17];
memset(chNameInput,0,17);
char chPassWordInput[7];
memset(chPassWordInput,0,7);
while ((i=getche())!='\n')
{
chNameInput[j]=i;
j++;
}
printf("%s\r\n",chNameInput);
return 0;
}
这是我的程序,为什么不能输出结果?
9 个解决方案
#1
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc, char** argv)
{
char i=0;
int j=0;
char chNameInput[17];
memset(chNameInput,0,17);
char chPassWordInput[7];
memset(chPassWordInput,0,7);
while ((i=getche())!='\r')
{
chNameInput[j]=i;
j++;
}
chNameInput[j] = 0;
printf("\n%s\n",chNameInput);
return 0;
}
#2
不带回显的应该改getche为getch
在while结束后最好fflush(stdin);一下.
在while结束后最好fflush(stdin);一下.
#3
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc, char** argv)
{
char i=0;
int j=0;
char chNameInput[17];
memset(chNameInput,0,17);
char chPassWordInput[7];
memset(chPassWordInput,0,7);
while ((i=getche())!='\r' && j<17)
{
chNameInput[j]=i;
j++;
}
chNameInput[j] = 0;
printf("\n%s\n",chNameInput);
return 0;
}
#4
嘿嘿j==17的时候,while中止
然后chNameInput[17] = 0;
就囧了.
#5
while ((i=getche())!='\r')
用getche点回车后输出不了,用getch输入时不显示 回车却能输出 什么原因?
#6
getche回车输出了,只是覆盖了上1行的输出.
#7
LZ遇到的问题是因为getche直接从终端读输入,而不是从输入缓冲,这时的换行还没转换为‘'\r',‘\n'
#8
这样一改的话会有什么bug吗?我单步运行没看出有什么异同,是不是j+1了再初始一下!能给我讲解一下吗?多谢了
#9
字符串以'\0'结尾.你可以用3L代码,只不过当输入17个字符时会少放个字符进来
#1
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc, char** argv)
{
char i=0;
int j=0;
char chNameInput[17];
memset(chNameInput,0,17);
char chPassWordInput[7];
memset(chPassWordInput,0,7);
while ((i=getche())!='\r')
{
chNameInput[j]=i;
j++;
}
chNameInput[j] = 0;
printf("\n%s\n",chNameInput);
return 0;
}
#2
不带回显的应该改getche为getch
在while结束后最好fflush(stdin);一下.
在while结束后最好fflush(stdin);一下.
#3
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(int argc, char** argv)
{
char i=0;
int j=0;
char chNameInput[17];
memset(chNameInput,0,17);
char chPassWordInput[7];
memset(chPassWordInput,0,7);
while ((i=getche())!='\r' && j<17)
{
chNameInput[j]=i;
j++;
}
chNameInput[j] = 0;
printf("\n%s\n",chNameInput);
return 0;
}
#4
嘿嘿j==17的时候,while中止
然后chNameInput[17] = 0;
就囧了.
#5
while ((i=getche())!='\r')
用getche点回车后输出不了,用getch输入时不显示 回车却能输出 什么原因?
#6
getche回车输出了,只是覆盖了上1行的输出.
#7
LZ遇到的问题是因为getche直接从终端读输入,而不是从输入缓冲,这时的换行还没转换为‘'\r',‘\n'
#8
这样一改的话会有什么bug吗?我单步运行没看出有什么异同,是不是j+1了再初始一下!能给我讲解一下吗?多谢了
#9
字符串以'\0'结尾.你可以用3L代码,只不过当输入17个字符时会少放个字符进来