欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在輸入輸出字符串時scanf(),printf()和gets(),puts()的區(qū)別淺談

 更新時間:2013年02月28日 16:38:35   作者:  
在輸入輸出字符串時scanf(),printf()和gets(),puts()的區(qū)別淺談,需要的朋友可以參考一下

1.scanf("%s",str)和gets(str)

scanf("%s",str)和gets(str)均可用于輸入字符串到字符數(shù)組變量str,但scanf("%s",str)只讀到輸入字符的空格或回車處,而gets(str)讀到回車處結(jié)束,所以當(dāng)句子中單詞由空格分開時要用后者來輸入,如下圖所示:

需要強(qiáng)調(diào)一點(diǎn),scanf("%s",str)在遇到'\n'(回車)或' '(空格)時輸入結(jié)束,但'\n'(回車)或' '(空格)停留在出入緩沖區(qū),如處理不慎會影響下面的輸入;gets(str)遇到'\n'(回車)時輸入結(jié)束,但'\n'(回車)已被替換為'\0',存儲于字符串中,輸入緩沖中沒有遺留的'\n'(回車),不會影響后續(xù)的輸入。測試程序的代碼為:

復(fù)制代碼 代碼如下:

View Code

#include<iostream>
#include<stdio.h>

using namespace std;

int main()
{
  //freopen("http://home//jack//jack.txt","r",stdin);
  char str[80];
  char ch;
  cout<<"1、請輸入一個沒有空格的字符串:"<<endl;
  scanf("%s",str);
  cout<<"用scanf(\"%s\",str)輸入的字符串為:"<<str<<endl;
  cout<<"再輸入一次作為對比:"<<endl;
  while((ch=getchar())!='\n'&&ch!=EOF);
  gets(str);
  cout<<"用gets(str)輸入的字符串為:"<<str<<endl;
  cout<<"2、請輸入一個有空格的字符串:"<<endl;
  scanf("%s",str);
  cout<<"用scanf(\"%s\",str)輸入的字符串為:"<<str<<endl;
  cout<<"再輸入一次作為對比:"<<endl;
  while((ch=getchar())!='\n'&&ch!=EOF);
  gets(str);
  cout<<"用gets(str)輸入的字符串為:"<<str<<endl;
  return 0;
}

其中while((ch=getchar())!='\n'&&ch!=EOF);是處理輸入緩存中的遺留的辦法;fflush(stdin)方法對某些編譯器不適用,不是標(biāo)準(zhǔn)C支持的函數(shù)。

2、printf(“%s”,str)和puts(str)

先看如下代碼:

復(fù)制代碼 代碼如下:

View Code

#include<iostream>
#include<stdio.h>

using namespace std;

int main()
{
  //freopen("http://home//jack//jack.txt","r",stdin);
  char str1[80]="hello";
  cout<<"用printf(\"%s\",str1)輸出的字符串為:";
  printf("%s",str1);
  cout<<"用puts(str1)輸出的字符串為: ";
  puts(str1);
  char str2[80]="hello world";
  cout<<"用printf(\"%s\",str2)輸出的字符串為: ";
  printf("%s",str2);
  cout<<"用puts(str2)輸出的字符串為: ";
  puts(str2);
  return 0;
}

從運(yùn)行結(jié)果可以看出,printf(“%s”,str)和puts(str)均是輸出到'\0'結(jié)束,遇到空格不停,但puts(str)會在結(jié)尾輸出'\n',printf(“%s”,str)不會換行。printf(“%s\n”,str)可以替換puts(str)。

完。

相關(guān)文章

  • C語言中scanf函數(shù)的原樣輸入的坑及解決

    C語言中scanf函數(shù)的原樣輸入的坑及解決

    這篇文章主要介紹了C語言中scanf函數(shù)的原樣輸入的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++異常捕捉與處理的深入講解

    C++異常捕捉與處理的深入講解

    這篇文章主要給你大家介紹了關(guān)于C++異常捕捉與處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C++關(guān)于引用作為函數(shù)的用法

    C++關(guān)于引用作為函數(shù)的用法

    今天小編就為大家分享一篇關(guān)于C++關(guān)于引用作為函數(shù)的用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言文件復(fù)制實(shí)例詳解

    C語言文件復(fù)制實(shí)例詳解

    這篇文章主要介紹了C語言文件復(fù)制實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Visual Studio Code配置C、C++環(huán)境并編寫運(yùn)行的方法

    Visual Studio Code配置C、C++環(huán)境并編寫運(yùn)行的方法

    這篇文章主要介紹了Visual Studio Code配置C、C++環(huán)境并編寫運(yùn)行的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • C 語言基礎(chǔ)教程(我的C之旅開始了)[八]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[八]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[八]...
    2007-02-02
  • C++萬能庫頭文件在vs中的安裝步驟(圖文)

    C++萬能庫頭文件在vs中的安裝步驟(圖文)

    這篇文章主要介紹了C++萬能庫頭文件在vs中的安裝步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C語言解數(shù)獨(dú)程序的源碼

    C語言解數(shù)獨(dú)程序的源碼

    這篇文章主要為大家詳細(xì)介紹了C語言解數(shù)獨(dú)程序的源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言中的程序環(huán)境與預(yù)處理詳情

    C語言中的程序環(huán)境與預(yù)處理詳情

    這篇文章主要介紹了C語言中的程序環(huán)境與預(yù)處理詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 詳解C語言中sizeof如何在自定義函數(shù)中正常工作

    詳解C語言中sizeof如何在自定義函數(shù)中正常工作

    在main函數(shù)中,sizeof是可以正常工作的,但是在自定義函數(shù)中就不可以了。所以本文將為大家詳細(xì)講解一下如何解決這一問題,感興趣的可以了解一下
    2022-05-05

最新評論