-
s 和 &s 都表示地址并具有相等的值。
S 与 &s 不同,其中 s 是 char *,s 是 char (*10),后者是指向包含 10 个字符的行的指针。
在 scanf("%s",&s);在语句中,&s 有一个隐式强制转换,它等效于 scanf("%s",(char *)s);
-
它对结果没有影响,这样使用,当您按 f5 进行调试时,结果不会闪烁。
-
scanf("设置字符串格式"、地址表);
有三种类型的格式化字符串:
1) 格式说明符,%c,%d...。
2. 空格:空格字符将导致 scanf() 函数在读取操作期间从输入中省略一个或多个空格字符。
3. 非空格字符:非空格字符会导致 scanf() 函数在读取时消除与非空格字符相同的字符。
所以,%c前面必须有一个空格,否则系统会在变量中输入另一个值后读取你输入的回车符,导致无限循环。 当然,如果 scanf("%c", &varname) 是第一个读取语句,因此不需要空格。
-
scanf 无法输入字符串:
由于 scanf 函数在遇到空格、换行符或制表符时将立即结束读取,因此键入 hello jane,最后只读取 jane。
如果发现第一个输入的内容,scanf 不会全部读取,只读取第一个空格之前的内容,即 John,后续的 Wilson 会暂时存储在缓冲区中,当第二个 scanf 出现时,Wilson 会自动存储在第二个 scanf 函数的变量中, 也就是说,name2=wilson。
因此,在打印 name2 值的末尾,它显示 wilson。 当我们输入 C Enter 时,scanf 从缓冲区中获取 C 并将其交给 CH,但返回值仍在缓冲区中,并没有将其带走,当我们输入字符串时,它被交给 CH1,因为返回值也是一个字符。
如何使scanf在输入后不换行
输入字符时:当 scanf 中没有空格时:不要有空格,也不要换行,因为空格和换行符是字符。
因此,只需输入字符,当 scanf 中有空格时:您可以有一个没有换行符的空格,当您输入数字(浮点数)时:您可以换行或空格,因为它们不是数字。
当 scanf 中没有逗号时:没有逗号,否则第二个数字将变为 0,当 scanf: 中有逗号时:可以有逗号。
-
s 和 &s 都表示地址并具有相等的值。
S 与 &s 不同,其中 s 是 char *,s 是 char (*10),后者是指向包含 10 个字符的行的指针。
在 scanf("%s",&s);在语句中,&s 有一个隐式强制转换,它等效于 scanf("%s",(char *)s);
-
不。 Scanf() 是 C 语言中的输入函数。 表单: int scanf(const char * restrict format,..
字符串的格式包含 s 中的 format 指令,用于读取字符序列,后跟一个 null 字节,并遇到空格字符(t、空格等)以完成读取。
Scanf 在输入字符串时不会收到空格,按 Enter 和 Tab 键,则认为输入结束。 scanf 函数直接从输入缓冲区获取数据,而不是从键盘(即终端)缓冲区获取数据。 如果读取以 Carriage return() 结尾,它将一起被读入输入流缓冲区,因此在第一次接受输入后,该字符将被留下。
使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。