Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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
C-在字符串上使用scanf输入数字_C_String_Numbers_Character_Scanf - Fatal编程技术网

C-在字符串上使用scanf输入数字

C-在字符串上使用scanf输入数字,c,string,numbers,character,scanf,C,String,Numbers,Character,Scanf,我会尽量简短地说明我的问题是什么。 虽然,我是一个初学者程序员,所以我真的很抱歉我的愚蠢的问题 我有一个字符串。 我想使用scanf给这个字符串一个值。 该值甚至可以是单个数字(但我希望该数字也作为一个字符) 所以我做了以下代码: char string[20]; scanf("%s", string); //LETS ASSUME WE ONLY WRITE THE NUMBER 1 IN THE STRING if(string=='1') printf("You have enter

我会尽量简短地说明我的问题是什么。 虽然,我是一个初学者程序员,所以我真的很抱歉我的愚蠢的问题

我有一个字符串。 我想使用scanf给这个字符串一个值。 该值甚至可以是单个数字(但我希望该数字也作为一个字符)

所以我做了以下代码:

char string[20];
scanf("%s", string);

//LETS ASSUME WE ONLY WRITE THE NUMBER 1 IN THE STRING

if(string=='1')
 printf("You have entered a single number: 1");

// IF I WOULD RUN THIS PROGRAM THE PRINTF PART WOULD NOT HAPPEN. WHY?
这段代码当然只是一个例子。 在我的程序中,我会用IF做一件与简单printf不同的事情

虽然,在这段代码中,如果我将字符串1作为值,然后按enter键,那么我在if中编写的东西由于某种原因不会发生

谁能给我一个解释,我应该如何做,然后使它的工作?那么我应该如何编写IF部分呢?

使用(注意,单引号表示
char
值,而不是字符串文本)

#包括
...
如果(strcmp(string,“1”)==0)/*如果返回0,则两个字符串的字符串内容相同*/
...

由于C不直接支持进行字符串比较,而您实际上是在比较两个指针(即使它们存储了相同的值,也不会是与字符串文本
“1”相同的指针)
字符串
变量位于计算机内存中的不同位置。

@user3121023嘿!我试过了。我想我现在有字符串了。但我不明白什么。我试过这样做:制作一个新字符串,这样我就可以使用strcmp,->char helper[20];然后制作这个:helper[0]='1';helper[1]='\0';假设用户将数字1作为字符串的值,然后执行strcmp(string,helper);结果它给了我一个1。但它应该给我一个0,因为两者相等。有什么问题吗?@user3121023成功了!非常感谢您的帮助!祝您愉快!同时告诉
scanf()
它可以存储到
字符串中以防止潜在缓冲区溢出的字符数:
scanf(“%19s”,字符串);
#include <string.h>

...

if (strcmp(string, "1") == 0) /* if it returns 0, the string contents are the same for both strings */

...