c++ scanf输入字符串_在C语言中,你真的搞清楚字符串了吗?
生活随笔
收集整理的這篇文章主要介紹了
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语言中,你真的搞清楚字符串了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts控制只显示部分数据的折线图
- 下一篇: ibe加密原理_ibe 基于身份的IBE