我正在尝试从用户那里得到一个句子和一封信,由于某种原因,它没有收到这封信scanf
与getcahr()
的作用不同;
void main(){
char str[100];
char letter;
printf("Enter a line: \n");
scanf("%s", str);
printf("Enter a letter: ");
scanf("%c", &letter);
printf("%c", letter);
}
尝试将NULL放入字母中没有区别
[一个可能的原因可能是在获取字符串时,按回车键后将换行。因此,我们需要告诉scanf避免换行符。尝试在%c前面放置一个空格,这将告诉scanf忽略换行符。scanf(“%c”,&letter)
//似乎行为异常,具体取决于编译器。我使用CLion运行以下代码,并在scanf的百分号之前添加了空格。
//希望能有所帮助:)
#include <stdio.h>
int main() {
char name[100];
char a;
printf("enter anything \n");
scanf(" %s %c", &name,&a);
printf("%s space %c",name,a);
return 0;
}
scanf("%s"
读取空格分隔的单词,NOT一行。因此,它将跳过输入上的所有初始空白,然后读取非空白字符,直到(且不包括)下一个空白字符为止。由于换行符是空格,它将结束此过程,但是其他任何空格也将结束它。
scanf("%c"
读取单个字符without跳过任何空格(与getchar相同)。它不会跳过空白的事实意味着,如果您在scanf("%s"
之后直接使用它,则将获得在第一个scanf结尾的所有空白字符。
如果要读取一行,请使用fgets
或getline