当前位置:首页 C++ > 正文

getchar与scanf的区别

作者:野牛程序员:2023-06-23 20:27:55 C++阅读 2706

getchar()scanf()是C语言中的输入函数,它们有以下区别:

  1. 功能不同:

    • getchar()函数用于从标准输入(键盘)读取一个字符,并将其作为整数返回。

    • scanf()函数用于从标准输入(键盘)读取格式化输入,可以读取多种类型的数据,如整数、浮点数、字符等。

  2. 读取方式不同:

    • getchar()函数每次只能读取一个字符,读取一个字符后,指针会自动移动到下一个字符的位置。

    • scanf()函数可以按照指定的格式从输入流中读取多个字符或数据。

  3. 输入缓冲区处理方式不同:

    • getchar()函数每次调用时,会直接从输入缓冲区读取一个字符,不管缓冲区中是否有其他无用字符。

    • scanf()函数在读取数据时,会先跳过输入缓冲区中的空白字符(如空格、换行符等),然后根据格式字符串的要求读取数据。

  4. 错误处理方式不同:

    • getchar()函数在遇到错误时(如读取到文件结束符EOF或读取失败),会返回特定的错误标志。

    • scanf()函数在遇到错误时,会返回读取成功的数据个数,如果返回值与预期不符,可以通过判断返回值来确定是否发生了错误。

总体而言,getchar()适用于读取单个字符的简单输入,而scanf()则适用于读取多种类型的格式化输入。


当我们需要从用户输入中获取字符或字符串时,我们可以使用getchar()scanf()函数。

下面是使用getchar()函数和scanf()函数分别读取字符和字符串的示例:

示例1:使用getchar()读取单个字符

#include <stdio.h>

int main() {
    char ch;

    printf("Enter a character: ");
    ch = getchar();

    printf("You entered: %c\\n", ch);

    return 0;
}

输出:

Enter a character: A
You entered: A

示例2:使用scanf()读取单个字符

#include <stdio.h>

int main() {
    char ch;

    printf("Enter a character: ");
    scanf(" %c", &ch);

    printf("You entered: %c\\n", ch);

    return 0;
}

注意:在scanf()中的格式字符串中加入空格" %c",以跳过输入缓冲区中的空白字符(如换行符),然后读取字符。

输出:

Enter a character: B
You entered: B

示例3:使用scanf()读取字符串

#include <stdio.h>

int main() {
    char str[100];

    printf("Enter a string: ");
    scanf("%s", str);

    printf("You entered: %s\\n", str);

    return 0;
}

注意:在scanf()中的格式字符串中使用%s来读取字符串,但要确保输入的字符串不超过指定的数组长度。

输出:

Enter a string: Hello, World!
You entered: Hello,

在这个例子中,scanf()函数只读取了空格前的字符串"Hello,",因为空格字符被视为字符串的结束符。如果我们想要读取整个句子,包括空格,可以使用fgets()函数来代替scanf()

以上示例演示了getchar()scanf()函数在读取字符和字符串方面的基本用法。你可以根据具体的需求选择适当的函数来获取用户的输入。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击