1. 程式人生 > >C/C++如何整行讀入字串

C/C++如何整行讀入字串

在寫程式碼的過程中,經常要一行一行的讀入字串進行處理,這裡我總結了一些方法,供大家參考。

回到頂部

方法一:scanf()讀入char[]

使用方法:

char str[1024];
scanf("%[^\n]",&str);
getchar();

說明:在scanf函式中,可以使用%c來讀取一個字元,使用%s讀取一個字串, 但是讀取字串時不忽略空格,讀字串時忽略開始的空格,並且讀到空格為止,因此只能讀取一個單詞,而不是整行字串。

  其實scanf函式也可完成這樣的功能,而且還更強大。這裡主要介紹一個引數,%[ ],這個引數的意義是讀入一個字元集合。[ ]是個集合的標誌,因此%[ ]特指讀入此集合所限定的那些字元,比如%[A-Z]是輸入大寫字母,一旦遇到不在此集合的字元便停止。如果集合的第一個字元是"^",這說明讀取不在"^"後面集合的字元,既遇到"^"後面集合的字元便停止。注意此時讀入的字串是可以含有空格的,而且會把開頭的空格也讀進來

  注意:如果要迴圈的多次從螢幕上讀取一行的話,就要在讀取一行後,在用%c讀取一個字元,將輸入緩衝區中的換行符給讀出來。否則的話,在下一次讀取一行的時候,第一個就遇到'\n',匹配不成功就直接返回了。這裡可以用scanf()或者getchar()函式讀取換行符。

回到頂部

方法二:getchar()讀入char[]

使用方法:

char str[1024];
int i=0;
while((str[i]=getchar())!='\n')
    i++;
getchar();

說明:這樣一個一個讀也可以,也會把開頭的空格讀進來。最後也需要考慮換行符,使用getchar()讀出來。

回到頂部

方法三:gets()讀入char[]

使用方法:

char str[1024];
gets(str);

說明:感覺這個就是多個getchar的集合函式,很好用。功能是從標準輸入鍵盤上讀入一個完整的行(從標準輸入讀,一直讀到遇到換行符),把讀到的內容存入括號中指定的字元數組裡,並用空字元'\0'取代行尾的換行符'\n'。讀入時不需要考慮換行符。

回到頂部

方法四:getline()讀入string或char[]

使用方法:

string str;
getline(cin,str);//讀入string

char str2[1024];
cin.getline(str2,1024);//讀入char陣列

說明:這是比較常用的方法,cin.getline第三個引數表示間隔符,預設為換行符'\n'。讀入不需要考慮最後的換行符。

回到頂部

方法五:get()讀入char[]

使用方法:

char str3[1024];
cin.get(str3,1024);//讀入char陣列

說明:get函式讀入時需要考慮最後的換行符,也就是說,如果用get讀入多行資料,要把'\n'另外讀出來,一般使用cin.get(str,1024).get();來讀入多組資料。

本文版權歸作者AlvinZH和部落格園所有,歡迎轉載和商用,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利.

相關推薦

C/C++如何字串

在寫程式碼的過程中,經常要一行一行的讀入字串進行處理,這裡我總結了一些方法,供大家參考。 回到頂部 方法一:scanf()讀入char[] 使用方法: char str[1024]; scanf("%[^\n]",&str); getchar(); 說明:在scanf函式中,可以使用%c來讀

C語言---關於scanf字串的一些問題

scanf是C語言中常用的標準輸入輸出函式,它的常規用法是scanf(“輸入格式”,輸入地址),scanf從輸入緩衝區取入資料按照指定的“輸入格式”儲存到指定的“輸入地址”。 但是有一類問題通常令人頭疼,那就是字串的讀入,此處僅僅討論使用scanf讀取字串的一些

c++字串:cin和getline的比較

c++輸入字串到string類可以用getline函式,第一個引數是cin,第二個引數是string類的變數,第三個引數是結束標誌。 該函式不會讀入結束標誌,而是跳過。 當cin>>從緩衝區中讀取資料時,若緩衝區中第一個字元是空格、tab或換行這些分隔符時,c

c/c++ 從鍵盤流中字串的函式:gets(str);

****本文摘自西電論壇 標頭檔案:#include <stdio.h> gets()函式用於從緩衝區中讀取字串,其原型如下:    char *gets(char *string);gets()函式從流中讀取字串,直到出現換行符或讀到檔案尾為止,最後加上NUL

c語言從stdin

程式碼 #include<stdio.h> #include<stdlib.h> int main(int argc, char* argv[]) { char *

【總結】c++輸入時如何空格

cin和scanf輸入的時候遇到空格,回車,換行符都是代表輸入結束的,是沒辦法記錄下輸入的空格的,我用的是下面兩種方法~ 功能 程式碼實現 C++ 輸入string型字串時如

C語言檔案的與寫入

學了一學期的C語言,還不怎麼會使用指標,檔案的讀入和寫入也不能很順利的寫出來,說起來好慚愧。碰巧今天朋友讓我幫他編寫一個C語言程式,對他數模要用到的大量資料求平均值(每天不同時刻對某一物理量進行檢測,持續幾十天,求那些時刻測得的物理量的平均值)。程式碼很簡單,關鍵是要掌握怎樣

fgets、gets、scanf函式字串比較

首先,說說這個函式的使用方法。程式碼如下: char str[10]; fgets(str, 10, stdin);//stdin表示從輸入流中讀入,也可以是其他檔案指標。 gets(str); scanf("%s", str);其中fgets函式是安全的,gets和sc

Java練習題_Map 利用Map,完成下面的功能: 從命令一個字符串,表示一個年份,輸出該年的世界杯冠軍是哪支球隊。

equals 一次 can 世界 java練習 等於 system entry 網上 從命令行讀入一個字符串,表示一個年份,輸出該年的世界杯冠軍是哪支球隊。 歷屆世界杯冠軍 屆數 舉辦年份 舉辦地點 冠軍 第一屆 1930年 烏拉圭 烏拉圭 第二屆 1934年 意大利 意

scanf字串字元的區別

今天下午比賽時候有道題用c++輸入輸出是超時的,所以準備換上c試試,發現幾個小問題: 1、使用scanf("%c", &a)讀取a(a是char型別),如果讀取之前有換行符或者空格,那麼a就會把之前的換行符或者空格讀取到,解決方法就是這之前先getchar()一下。

C++一行字串

cin.getline(char * str, int size_t, char delim) 標頭檔案: #include<iostream> 引數1:字元陣列 引數2:讀入字串長度 引數3:終止符 示例: char str[105]; cin.ge

C語言字串函式筆記

gets(str)函式和scanf("%s",str)區別:   轉自:https://zhidao.baidu.com/question/290403568.html   二者都是從終端讀入字串。 功能為:  1、 gets功能為讀入一行,並將換行符轉換為字串結束符。  2、 scanf(

c/c++ 字元和字串小結(gechar cin getline gets)

文章來源:http://www.cnblogs.com/StoneXie/p/9603266.html c/c++ 字元和字串讀入小結(gechar cin getline gets) by slj getchar:   逐個字元讀入,可以讀入一切字元,包括空格符和回車符。這個函式很通用

C++檔案的寫和對多多個字串的處理

C++讀寫檔案中的字串 今天幫人做了個簡單的作業,沒想到花時間最多的不是演算法而是檔案的讀寫,還有對讀入字串的分割處理。晚上寫作業的時候又用到了對字串的處理,這裡記錄一下。 小白第一次寫部落格,做的不好的請多多指正。 題目如下: Retail.dat檔案中包含了某零售商店

一行字元(包括空格)做為一個字串的兩個方法 ,C/C++

        今天參加華為線上測試(OJ),前兩道題都做對了,最後一道我算出了結果,卻不知道如何輸出來,==         題目大概是要求輸入一行字元(字元為數字、負號、小數點、空格組成)作為一個字串,在字串中提取整數單元,每兩個整數單元用空格隔開了,整數單元包含負數。

C++primer第五版 編寫一段程式兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串和長度較大的那個字串

一個字串比較的簡單程式。 string物件相等意味著它們的長度相同且所包含的字元也全都相同。 字串的比較: 1.如果兩個string物件的長度不同,而且較短string物件的每個字元都與較長string物件對應位置上的字元相同,就說string物件小於較長string物件

c++ 和寫入文件

spa end ofstream OS pen clu img ++ lin 讀入 #include<ifstream> ifstream infile; infile.open(img_dir); while(getline(infile,tmp)){

C++ fscanf 讀取一

format 賦值 str orm can scanf mat har tabs scanf, fscanf很相似,都是從流中讀取輸入,然後賦值給變量 int scanf(const char *format, ...) int fscanf(FILE *stream, c

C語言 檔案大小,分配空間,檔案,寫入檔案,實現複製的功能

首先通過兩種方法得到檔案的大小,位元組為單位,根據這個大小使用malloc分配固定的空間buffer,二進位制流讀入檔案,把二進位制流寫入buffer中,buffer輸出寫入到新的檔案。 原始檔1.txt,輸出檔案1.txt.txt 環境為Ubuntu 16.04,gcc #incl

c++與輸出的探索』

對於讀入與輸出的探索和優化 ·cin和cout ·scanf和printf ·關閉同步流 ·freopen和fclose ·整型read ·浮點型與字串read ·快輸 ·fread <更新提示> <第一次更新> <正