C語言strtok函式能過濾換行符或者回車符嗎

時間 2022-02-01 19:46:45

1樓:匿名使用者

strtok(str , "\r\n"); 這樣寫應該可以char str[128];

char *p;

strcpy( str, "123\r\n456\r\n789\r012\n" );

p=strtok(str,"\r\n");

while(p)

2樓:匿名使用者

strtok函式能夠過濾換行符或者回車符,只要分割字串delim中包含字元"\n\r"即可。

1、strtok函式:

原型:char *strtok(char s, const char *delim);

功能:將一個字串分解為一組字串,s為要分解的字串,delim為分隔符字串;

說明:當strtok函式在引數s的字串中發現引數delim中包含的分割字元時,則會將該字元改為 字元。在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null。

每次呼叫成功則返回指向被分割出片段的指標;

返回值:從字串s開頭開始的一個個被分割的字串。分割結束時,返回null。所有delim中包含的字元都會被濾掉,並將被濾掉的地方設為一處分割的節點;

2、例程:

#include

#include

int main()

return 0;}

c語言換行符和回車符的疑問

3樓:匿名使用者

問的問題好奇怪,程式既沒有return ,exit,也沒有堆疊溢位,怎麼會失效?

建議你在return 0;之前加一句printf("main end.\n");你就知道程式沒有失效了。

另外關於\r還是\n,系統會自動幫你轉換成\n,按照你這個程式的寫法你只需要在程式裡面判斷\n就可以了,多餘你不用考慮。

4樓:數學之星

c語言中用「printf」輸出時,換行符是'\n',回車符是'\r'。

c語言中用「scanf」獲取輸入值時,獲取的「敲鍵盤回車鍵產生的字元」是換行符。

你把if語句去掉之後,「gets(name) ;puts(name) ;」這兩句語句沒有失效,而是把換行符獲取、輸出了。由於你沒有在這兩句語句後面放置暫停語句,這兩句語句把換行符獲取、輸出後程式直接結束了,沒有讓你看到效果,所以你認為這兩句語句失效了。

c語言中換行符和回車符的區別

5樓:天寂無痕

1、換行符將當前位置移動到下一行開頭。回車符將當前位置移動到本行開頭。

2、c語言中換行符是「\n」,回車符是「\r」。

所有的ascii碼都可以用「\」加數字(一般是8進位制數字)來表示。而c中定義了一些字母前加"\"來表示常見的那些不能顯示的ascii字元,如\0,\t,\n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。

6樓:認識我後悔嗎

一、控制字元不同

1、換行符:換行的英文newline,控制字元可以寫成lf,即line feed。

2、回車符:回車的英文return,控制字元可以寫成cr,即carriage return;

二、本義不同

2、回車符:是游標重新回到本行開頭。

擴充套件資料:

不同語言的換行符

一、html語言

可插入一個簡單的換行符,

標籤是空標籤(意味著它沒有結束標籤,因此這是錯誤的:

)。在[1]

xhtml 中,把結束標籤放在開始標籤中,也就是

。請注意,

標籤只是簡單地開始新的一行,而當瀏覽器遇到 標籤時,通常會在相鄰的段落之間插入一些垂直的間距。

二、c語言

"\n"

c語言中的換行符是"\n",就是輸入完一行內容後,游標轉到下一行的起始位置 。

三、c++語言

"endl"

c++語言中的換行符是endl。

例如:cout<<"這是換"<將顯示輸出:

這是換行符。

四、word換行符

word換行符是一種換行符號,它的作用是換行顯示,但是它不是真正的段落標記,它的換行不是真正意義上的重起一段,因此被換行符分割的文字其實仍然還是一個段落中的,word中基於段落的所有操作都是不會識別換行符為段落結尾的。

五、vb語言

在vb中,若命令太長,在一行輸入不方便,可以在**後輸入空格和下劃線再換行。

例如:private declare function mcisendstring lib winmm. _

dll alias mcisendstringa (byval lpstrcommand as string, _

byval lpstrreturnstring as string, byval ureturnlength _

as long, byval hwndcallback as long) as long。

7樓:亂七八糟

c語言中回車符是'\r',換行符是'\n'

回車符是游標從當前位置回到本行的行首,換行符是游標從當前位置換到下一行。

以\開頭的字元,稱為轉義字元,用來表達特殊的含義,如\n ——換行(ascii碼值為10)

\r ——回車(將當前位置游標移到平行開頭,ascii碼值為13)\t —— tab鍵(佔8列,ascii碼值為9)\\ ——輸出\(ascii碼值為92)

\b ——退格鍵(ascii碼值為34)

\v ——垂直製表位(ascii碼值為11)\f ——換頁(將當前位置移到下頁開頭,ascii碼值為12)

8樓:匿名使用者

c語言中,換行,回車分別是'\n'和\r';

換行,是換到下一行。

回車,只是回到本行開頭。

在windows/dos系統中,我們通常說的回車,也就是鍵盤的enter鍵實際包含了回車換行。在這樣的系統中,'\n'的作用不僅僅是換到下一行,而且換到了下一行的開頭了。

嘗試執行下面的**,看輸出結果就會很清楚了#include

int main()

9樓:相默卿凝綠

換行是游標從當前位置換到下一行。

回車是游標從當前位置回到本行的行首。

換行回車效果就是前面兩個效果的疊加,也就是換到下一行,並回到行首。

10樓:匿名使用者

一樣的吧, 都是'\n'

c語言中gets函式能否只接收一個換行符 如gets(a),輸入時輸入回車

11樓:小夏在深圳

由於scanf函式遇到空格後就停止輸入,如需要輸入一句話的話,要嘗試其他的函式例如gets()函式。

原型函式為char *gets(char*buffer),返回一個指向char的指標,返回的指標與傳遞給他的指標是同一個指標。

例子:char name[20];

gets(name);

printf(「%s」,name);

此時在控制介面中輸入hello world,輸出將會是hello world。

上例同時也可以寫成:

char name[20];

char *ptr;

ptr=gets(name);

printf(「%s」,name);

printf(「%s」,ptr);

此時兩句話輸出的都是hello world,從而證明ptr的指標就是賦給gets函式的指標。但是gets()函式有一個缺點,當輸入的字串的長度大於申請的空間時,會造成空間越界,此時在函式執行結束釋放空間時會報錯。

擴充套件資料

1、輸出字串的效果,寬度和精度同樣也適用於字串。

3、put是需要遇到』\0』才會輸出的,因此通過字串陣列遍歷賦值時,不要忘記加』\0』。

12樓:刺友互

c語言中gets函式可以只接收一個換行符 如gets(a),輸入時輸入回車,實現過程為:

1、首先我們新建一個dev c++的專案。

2、接下來在專案中新建c語言程式檔案。

3、然後在c語言檔案中宣告一個位元組陣列。

4、通過printf函式提示使用者輸入字串,通過scanf接收使用者輸入的字串。

5、接著在通過printf函式輸出使用者輸入的內容。

6、最後執行c語言程式,我們輸入內容以後就可以輸出了。

13樓:匿名使用者

注意這點,gets()函式會讀取一行字元,直到遇到換行符'\n為止,並且這個換行符不會讀取到陣列中。

scanf("%s%s",a1,a2);

這一行把aa和bb讀取並分別儲存到a1和a2陣列中,但是會把回車符留在緩衝區中。

gets(a3);gets(a4);

這裡的gets(a3)會讀取這個回車符,但是不會把回車符儲存到a3陣列,所以a3陣列內容不會改變,接下來的gets(a4)將以回車結尾的cc dd讀取並儲存到a4中

puts(a1);puts(a2);

分別在單獨的行中輸出a1和a2字串。

puts(a3);puts(a4);

分別在單獨的行中輸出a3和a4字串。由於a3沒有賦值,所以它依然保持在定義時的隨機值。

14樓:匿名使用者

最後一句應該有問題:分別在單獨的行中輸出a3和a4字串。由於a3沒有賦值,所以它依然保持在定義時的隨機值。

a3賦值了吧? 第一個元素a3[0] 變成了『\0』字元了吧?所以列印a3的時候不是一串垃圾值

而是空行。

15樓:匿名使用者

gets()讀不到換行符,讀取的換行符被轉換為null值,並由此來結束字串

16樓:花謝人散難忘

因為gets能夠接受回車,所以你a3裡面存的回車,a4裡面才是cc dd

17樓:蔡天訓

gets()會將'\n'丟棄,但是會寫入'\0',所以a3陣列的第一個元素不是垃圾值,而是'\0'

驗證**如下:

#include

int printascii(char(*str)[10])else

}return 0;

}main() ;

a[2][0]='a';

printascii(a);

scanf("%s%s",a[0],a[1]);

gets(a[2]);

gets(a[3]);

printascii(a);

puts(a[0]);

puts(a[1]);

puts(a[2]);

puts(a[3]);

}可以看見a[2][0]的值由97變成了0

c語言pow函式,C語言pow函式

丿 pow 函式用來求x的y次冪,x y及函式值都是double型 其原型為 double pow double x,double y 例項 如下 include include void main double x 2,y 10 printf f n pow x,y return 0 擴充套件資料...

c語言遞迴函式,請用C語言編寫遞迴函式

遞迴函式 程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。函...

c語言 清屏函式,c語言中的清屏函式clrscr 應該怎麼用?

墨汁諾 include include printf 請輸入游標位置 x,y 用逗號隔開 n scanf d,d x,y gotoxy x,y printf x d,y d x,y scanf d x void gotoxy int x,int y 設定游標位置 handle hout getstd...