当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 scanf()和gets()的区别用法及代码示例


scanf()

  • 它用于从标准输入(键盘)读取输入(字符,字符串,数字数据)。
  • 它用于读取输入,直到遇到空格,换行符或文件结尾(EOF)。

例如,请参见以下代码:

// C program to see how scanf() 
// stops reading input after whitespaces 
  
#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    scanf("%s", str); 
    printf("you entered:%s\n", str); 
  
    return 0; 
}

在这里,输入将由用户提供,输出将如下所示:

Input: Geeks for Geeks
Output: Geeks

Input: Computer science
Output: Computer

gets

  • 用于从标准输入(键盘)读取输入。
  • 它用于读取输入,直到遇到换行符或文件结尾(EOF)。
// C program to show how gets()  
// takes whitespace as a string. 
  
#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    gets(str); 
    printf("you entered:%s\n", str); 
    return 0; 
}

用户将在此处提供输入,如下所示


Input: Geeks for Geeks
Output: Geeks for Geeks

Input: Computer science
Output: Computer science

它们之间的主要区别是:

  1. scanf()读取输入直到遇到空白,换行或文件结尾(EOF),而gets()读取输入直到遇到换行或文件结尾(EOF),gets()遇到空白时不停止读取输入,而是将空白作为字符串。
  2. 扫描可以读取不同数据类型的多个值,而gets()将仅获取字符串数据。

差异可以以表格形式显示如下:

scanf() gets()
当scanf()用于读取字符串输入时,遇到空白,换行符或文件结尾时,它将停止读取 当gets()用于读取输入时,遇到换行符或文件结尾时,它将停止读取输入。
它会在遇到空白时停止读取输入,因为它将空白视为字符串。
用于读取任何数据类型的输入 它仅用于字符串输入。

How to read complete sentence from user using scanf()

实际上,我们可以使用scanf()读取整个字符串。例如,我们可以在scanf()中使用%[^ \ n] s来读取整个字符串。

// C program to show how to read 
// entire string using scanf() 
  
#include <stdio.h> 
  
int main() 
{ 
  
    char str[20]; 
    printf("Enter something\n"); 
  
    // Here \n indicates that take the input 
    // until newline is encountered 
    scanf("%[^\n]s", str);  
    printf("%s", str); 
    return 0; 
}

上面的代码读取字符串,直到遇到换行符为止。

例子:

Input: Geeks for Geeks
Output: Geeks for Geeks

Input: Computer science
Output: Computer science



注:本文由纯净天空筛选整理自Vaibhav_Arora大神的英文原创作品 Difference between scanf() and gets() in C。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。