日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ scanf输入字符串_在C语言中,你真的搞清楚字符串了吗?

發布時間:2024/10/12 c/c++ 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ scanf输入字符串_在C语言中,你真的搞清楚字符串了吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、C語言中沒有字符串這種數據類型,可以通過char的數組來替代;

2、字符串一定是一個char的數組,但char的數組未必是字符串;

3、數字0(和字符‘\0’等價)結尾的char數組就是一個字符串,但如果char數組沒有以數字0結尾,那么就不是一個字符串,只是普通字符數組,所以字符串是一種特殊的char的數組。

#include int main(){ char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符數組 printf("c1 = %s\n", c1); //亂碼,因為沒有’\0’結束符 //以‘\0’(‘\0’就是數字0)結尾的字符數組是字符串 char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0'}; printf("c2 = %s\n", c2); //字符串處理以‘\0’(數字0)作為結束符,后面的'h', 'l', 'l', 'e', 'o'不會輸出 char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'}; printf("c3 = %s\n", c3); return 0;}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?字符串的初始化操作

#include // C語言沒有字符串類型,通過字符數組模擬// C語言字符串,以字符‘\0’, 數字0int main(){ //不指定長度, 沒有0結束符,有多少個元素就有多長 char buf[] = { 'a', 'b', 'c' }; printf("buf = %s\n", buf); //亂碼 //指定長度,后面沒有賦值的元素,自動補0 char buf2[100] = { 'a', 'b', 'c' };char buf[1000]={“hello”}; printf("buf2 = %s\n", buf2); //所有元素賦值為0 char buf3[100] = { 0 }; //char buf4[2] = { '1', '2', '3' };//數組越界 char buf5[50] = { '1', 'a', 'b', '0', '7' }; printf("buf5 = %s\n", buf5); char buf6[50] = { '1', 'a', 'b', 0, '7' }; printf("buf6 = %s\n", buf6); char buf7[50] = { '1', 'a', 'b', '\0', '7' }; printf("buf7 = %s\n", buf7); //使用字符串初始化,編譯器自動在后面補0,常用 char buf8[] = "agjdslgjlsdjg"; //'\0'后面最好不要連著數字,有可能幾個數字連起來剛好是一個轉義字符 //'\ddd'八進制字義字符,'\xdd'十六進制轉移字符 // \012相當于\n char str[] = "\012abc"; printf("str == %s\n", str); return 0;}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字符串的輸入輸出

由于字符串采用了'\0'標志,字符串的輸入輸出將變得簡單方便。

#include int main(){ char str[100]; printf("input string1 : \n"); scanf("%s", str);//scanf(“%s”,str)默認以空格分隔 printf("output:%s\n", str); return 0;}? ? ? ? ? ? ? ? ? ? ? ? ? ??gets()函數#include char *gets(char *s);功能:從標準輸入讀入字符,并保存到s指定的內存空間,直到出現換行符或讀到文件結尾為止。參數: s:字符串首地址返回值: 成功:讀入的字符串 失敗:NULLchar str[100]; printf("請輸入str: "); gets(str); printf("str = %s\n", str);

gets(str)與scanf(“%s”,str)的區別:

l? gets(str)允許輸入的字符串含有空格

l? scanf(“%s”,str)不允許含有空格

注意:由于scanf()和gets()無法知道字符串s大小,必須遇到換行符或讀到文件結尾為止才接收輸入,因此容易導致字符數組越界(緩沖區溢出)的情況。

? ? ? ? ? ? ? ? ? ? ? ? ? ? fgets()函數#include char *fgets(char *s, int size, FILE *stream);功能:從stream指定的文件內讀入字符,保存到s所指定的內存空間,直到出現換行字符、讀到文件結尾或是已讀了size - 1個字符為止,最后會自動加上字符 '\0' 作為字符串結束。參數: s:字符串 size:指定最大讀取字符串的長度(size - 1) stream:文件指針,如果讀鍵盤輸入的字符串,固定寫為stdin返回值: 成功:成功讀取的字符串 讀到文件尾或出錯:NULL char str[100]; printf("請輸入str: "); fgets(str, sizeof(str), stdin); printf("str = \"%s\"\n", str);

fgets()在讀取一個用戶通過鍵盤輸入的字符串的時候,同時把用戶輸入的回車也做為字符串的一部分。通過scanf和gets輸入一個字符串的時候,不包含結尾的“\n”,但通過fgets結尾多了“\n”。fgets()函數是安全的,不存在緩沖區溢出的問題。

?puts()函數#include int puts(const char *s);功能:標準設備輸出s字符串,在輸出完成后自動輸出一個'\n'。參數: s:字符串首地址返回值: 成功:非負數 失敗:-1#include int main(){ printf("hello world"); puts("hello world"); return 0;}?fputs()函數#include int fputs(const char * str, FILE * stream);功能:將str所指定的字符串寫入到stream指定的文件中, 字符串結束符 '\0' 不寫入文件。參數: str:字符串 stream:文件指針,如果把字符串輸出到屏幕,固定寫為stdout返回值: 成功:0 失敗:-1 printf("hello world"); puts("hello world"); fputs("hello world", stdout);

fputs()是puts()的文件操作版本,但fputs()不會自動輸出一個'\n'。

總結

以上是生活随笔為你收集整理的c++ scanf输入字符串_在C语言中,你真的搞清楚字符串了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。