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
它們之間的主要區別是:
- scanf()讀取輸入直到遇到空白,換行或文件結尾(EOF),而gets()讀取輸入直到遇到換行或文件結尾(EOF),gets()遇到空白時不停止讀取輸入,而是將空白作為字符串。
- 掃描可以讀取不同數據類型的多個值,而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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。