为什么gets(sen)在此代码中不起作用? #包括 #包括 int main(){ 字符a; chars[100]; char-sen[100]; scanf(“%c”,&a);//取字符 printf(“%c”,a);//打印字符 scanf(“%s”,s);//将输入作为单词 printf(“\n%s”,s);//打印单词 如果((获取(sen))='\n') 获取(sen);//将输入作为字符串 put(sen);//打印该字符串 }
由于为什么gets(sen)在此代码中不起作用? #包括 #包括 int main(){ 字符a; chars[100]; char-sen[100]; scanf(“%c”,&a);//取字符 printf(“%c”,a);//打印字符 scanf(“%s”,s);//将输入作为单词 printf(“\n%s”,s);//打印单词 如果((获取(sen))='\n') 获取(sen);//将输入作为字符串 put(sen);//打印该字符串 },c,string,C,String,由于gets()从缓冲区中获取输入,因此它将在另一个gets()命令应起作用后将“\n”作为输入,但该命令不起作用。它不接受任何输入。为什么?获取(sen)返回sen,它是字符数组的地址 因此,你想做的应该是 if(strcmp(get(sen),“\n”)==0) 获取(sen);//将输入作为字符串 但是,这很容易出错,因为sen可以是带有换行符的空格,而不是“\n”左右。重写此代码以避免使用get,然后在新代码不起作用时询问有关新代码的问题。get的返回值是传递给它的指针,即sen,或出
gets()
从缓冲区中获取输入,因此它将在另一个gets()
命令应起作用后将“\n”作为输入,但该命令不起作用。它不接受任何输入。为什么?获取(sen)
返回sen
,它是字符数组的地址
因此,你想做的应该是
if(strcmp(get(sen),“\n”)==0)
获取(sen);//将输入作为字符串
但是,这很容易出错,因为
sen
可以是带有换行符的空格,而不是“\n”左右。重写此代码以避免使用get
,然后在新代码不起作用时询问有关新代码的问题。get
的返回值是传递给它的指针,即sen
,或出现错误时为空。它永远不会是'\n'
。您的编译器应该警告您有关比较的信息。阅读手册页。您甚至不应该使用get
。它只存在于遗留代码中。没有新编写的代码使用它。而且scanf(“%s”,s)
和get
一样糟糕;也修一下,请看。如果得到了
,并且(不正确的)比较是为了消除这种情况,那么您将陷入困境。不要混用输入法,将代码更改为fgets
后,您也会遇到同样的问题。我应该使用什么来代替gets()进行输入?