當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。