Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么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 - Fatal编程技术网

为什么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()进行输入?