Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
什么';scanf(“%s”)、scanf(“%s”)和scanf(“%s”)之间的区别是什么?_C_Scanf - Fatal编程技术网

什么';scanf(“%s”)、scanf(“%s”)和scanf(“%s”)之间的区别是什么?

什么';scanf(“%s”)、scanf(“%s”)和scanf(“%s”)之间的区别是什么?,c,scanf,C,Scanf,我对这种语法感到困惑。起初,我认为这是书中的印刷错误。但是,在相当长一段时间的编程过程中,我逐渐认识到它们有着不同的含义。尽管如此,我还是无法对这种语法有清晰的认识 同样,这两者之间的区别是什么: get(str) 和 get(str) 空格重要吗?如果是,那么如何操作?在scanf格式字符串中添加空格时,告诉scanf读取并跳过空格。例如,可以跳过输入中的换行符。还请注意,某些格式会自动跳过空白 例如,参见scanf功能系列 两者的区别 gets(str); 及 根本没有。字符串文本之外的

我对这种语法感到困惑。起初,我认为这是书中的印刷错误。但是,在相当长一段时间的编程过程中,我逐渐认识到它们有着不同的含义。尽管如此,我还是无法对这种语法有清晰的认识

同样,这两者之间的区别是什么:

get(str)
get(str)


空格重要吗?如果是,那么如何操作?

scanf
格式字符串中添加空格时,告诉
scanf
读取并跳过空格。例如,可以跳过输入中的换行符。还请注意,某些格式会自动跳过空白

例如,参见
scanf
功能系列


两者的区别

gets(str);

根本没有。字符串文本之外的实际代码可以使用任意数量的空白进行格式化。您甚至可以将上面的调用写为

gets
    (
        str
    )
;
还是一样的


哦,
gets
函数很久以前就被弃用了,甚至从最新的C标准中删除了。您应该改为使用。

scanf
格式字符串中添加空格时,告诉
scanf
读取并跳过空格。例如,可以跳过输入中的换行符。还请注意,某些格式会自动跳过空白

例如,参见
scanf
功能系列


两者的区别

gets(str);

根本没有。字符串文本之外的实际代码可以使用任意数量的空白进行格式化。您甚至可以将上面的调用写为

gets
    (
        str
    )
;
还是一样的

哦,
gets
函数很久以前就被弃用了,甚至从最新的C标准中删除了。你应该改用

格式字符串中的空白(如空格、制表符或换行符)与输入中的任意空白量相匹配,包括

获取中
空格没有任何意义。它在编译时被忽略

格式字符串中的空白(如空格、制表符或换行符)与输入中的任意空白量相匹配,包括


获取中
空格没有任何意义。它在编译时被忽略。

编译器有许多阶段,在第一阶段词法分析中, 所有不必要的空白都将被删除,这也是不必要的空白,届时将被删除,因此,
gets(a)和gets(a)

编译器有许多阶段,在第一阶段词法分析中, 所有不必要的空白都将被删除,这也是不必要的空白,届时将被删除,因此,
在gets(a)和gets(a)之间没有区别

关于scanf,这里有两件重要的事情需要了解:

  • 除%c和%[之外的所有转换修饰符忽略扫描项目前的空白
  • 您可以显式调用忽略所有空白的行为,如下所示:

    scanf(“%c”和&mychar)

    scanf(“\n%c”,&mychar)

    scanf(“\t%c”,&mychar)

  • 也就是说,转换字符串中的任何空格字符(包括空格)都会指示scanf忽略任何和所有空格,直到扫描项目

    由于除%c和%[之外的所有转换修饰符都会自动执行此操作,因此关于
    scanf(“%s”)
    scanf(“%s”)
    的原始问题的答案是没有区别

    我建议您阅读C FAQ上的所有scanf问题,并编写一些测试程序,以便更好地掌握这一切:


    关于scanf,这里有两件重要的事情需要了解:

  • 除%c和%[之外的所有转换修饰符忽略扫描项目前的空白
  • 您可以显式调用忽略所有空白的行为,如下所示:

    scanf(“%c”和&mychar)

    scanf(“\n%c”,&mychar)

    scanf(“\t%c”,&mychar)

  • 也就是说,转换字符串中的任何空格字符(包括空格)都会指示scanf忽略任何和所有空格,直到扫描项目

    由于除%c和%[之外的所有转换修饰符都会自动执行此操作,因此关于
    scanf(“%s”)
    scanf(“%s”)
    的原始问题的答案是没有区别

    我建议您阅读C FAQ上的所有scanf问题,并编写一些测试程序,以便更好地掌握这一切:


    s/deprecated/removed/(
    gets
    已从C11中的C标准库中删除,因为它非常糟糕)我听说过类似于scanf命令帮助刷新内存之前的空格。这是真的吗?你能告诉我刷新的情况吗?@Habi不涉及刷新。但是如果在扫描过程中输入缓冲区耗尽,新数据当然会被读入缓冲区。Joachim,输入缓冲区和内存不是很相似吗?还有talking关于“当然要将新数据读入缓冲区”,它是否适用于这两种情况。我的意思是它是否适用于带空格的scanf函数和不带空格的scanf函数。同样,在%s之前有空格和在%s之后有空格会有任何区别吗?@Habi使用的缓冲区当然在内存中,但没有显式刷新。格式字符串中的空格会跳过空格w就是这样,如果它在格式代码之前,那么它会在扫描之前跳过空格,如果它在格式之后,那么它会在扫描之后跳过空格。s/deprecated/removed/(
    get
    在C11中从C标准库中删除,因为它非常糟糕)我听过类似于scanf命令前的空格有助于刷新内存。这是真的吗?你能告诉我一些关于fl的事情吗