字串與字元陣列

2022-06-30 07:15:15 字數 4075 閱讀 4644

用scanf輸入字串

#include int main();

scanf("%s",s);//"%s"的作用就是輸入乙個字串的,scanf是以回車鍵作為輸入完成標示的,但回車鍵本身並不會作為字串的一部分

//如果scanf引數中的陣列長度小於使用者在鍵盤輸入的長度,那麼scanf就會緩衝區溢位,導致程式崩潰

int i;

for(i=0;i<10;i++)

printf("----------------------------------\n");

printf("%s\n", s);

return 0;

}

fgets函式

/*gets函式不檢查預留緩衝區是否能夠容納使用者實際輸入的資料。多出來的字元會導致記憶體溢位,fgets函式改進了這個問題。

由於fgets函式是為讀取檔案設計的,所以讀取鍵盤時沒有gets那麼方便*/

char s[100]=;

fgets(s,sizeof(s),stdin);

stdin是標準輸入,一般指鍵盤輸入到緩衝區裡的東西。

puts

//puts函式列印字串,與printf不同,puts會在最後自動新增乙個'\n'

char s="老龍很帥,在座的各位都很醜!!!";

puts(s);

fputs函式

//fputs是puts的檔案操作版本

char s="老龍很帥,在座的各位都很醜!!!";

fputs(s,stdout); //stdout標準的輸出

strlen,字串長度

//size_t strlen(const char* _str); 返回不包含字串結尾'\0'的字串長度

char s[100]="老龍很帥,在座的各位都很醜!!!";

int len=strlen(s);//得到字串長度,返回乙個字串中有效字元的數量(不包含字串結尾的0)

printf("%d\n",len);

//自定義strlen函式實現

int _strlen(const char* _str)

return len;

}

strcat,字串追加

//size_t strcat(char* _str1,const char* _str2) 將引數_str2追加到_str1後尾

char s[128]="hello world!";

int len=strlen(s);//計算s字串長度,返回乙個字串中的有效字元數量(不包含字串結尾的0)

printf("len=%d\n",len);

char s1[100]="abc123321";

strcar(s,s1);//將兩個字串合併,結果放入第乙個引數裡面,strcat也存在緩衝區溢位的問題

printf("%s\n", s);

//自定義strcat函式實現

void _strcat(char* _str1,const char* _str2)

}

strncat,字串有限追加

//size_t strncat(char* _str1,const char* _str2,size_t len)

char s[128] = "老龍很帥";

char s1[50] = ",在座的各位都很醜!!!";

strncat(s, s1, 5);

printf("%s\n", s);

//自定義strncat函式實現

void _strncat(char* _str1, const char* _str2, size_t len)

}}

strcmp,字串比較

//int strcmp(const char* _str1,const char* _str2);

//比較兩個字串是否相等,相等返回0,不等返回非0

char s[128] = "aabc"; //>大於-1 等於0 小於1

char s1[50] = "aabcs";

printf("%d\n", strcmp(s, s1));

//自定義strcmp函式實現

int _strcmp(const char* str1,const char* str2)

} if (ret > 0)

return 1;

else if (ret < 0)

return -1;

return 0;

}

strncmp,字串有限比較

int strcmp(const char* _str1,const char* _str2,size_t len);

strcpy字串拷貝

char *strcpy(char * _str1, const char * _str2);

//將引數_str2拷貝到引數_str1中

//自定義strcpy函式實現

void _strcpy(char* _str1,const char* _str2)

}

strncpy字串有限拷貝

sprintf,格式化字串

和printf函式功能類似,printf函式將格式化結果輸出到螢幕,sprintf將格式化結果輸出到字串

sscanf函式

sscanf類似於scanf函式,,scanf從鍵盤讀取使用者輸入,scanf從指定格式化字串讀取輸入

char s[128] = "10 0x10 aabc";

int x,y;

char b[100];

sscanf(s, "%d %x %[a-z]", &x,&y,b);

printf("%d\n",x);

printf("%x\n", y);

printf("%s\n",b);

strchr查詢字元

char * strchr(char * _str, int _ch);

//在引數_str中查詢引數_ch指定字元,找到返回字元_ch在_str中所在位置,沒有找到返回null;

//自定義strchr函式實現

char *strchr(const char* _str1,int ch)

} }return null;

}

strstr

char* strstr(char* _str,const char* _substr)

//在引數_str中查詢引數_substr指定子串,找到返回子串在_str中所在位置,沒有找到返回null

//自定義strstr函式實現

char* _strstr(char* _str, const char* _substr)

if (j == lensub)

return &_str[i];

} }return null;

}

strtok分割字串

//字元在第一次呼叫時strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null每次呼叫成功則返回指向被分割出片段的指標

char buf = "abc@defg@igk";

char *p = strtok(buf, "@");

while (p)

atoi轉化為int atof轉化為float atol轉化為long

需要包含標頭檔案stdlib.h

字元陣列與字串

字元陣列與字串 字串就是字元的序列,可看作單個資料項。定義在雙引號之間的字元組 雙引號除外 就是乙個字串常量。例 man is abviously made to think 字串變數的宣告與初始化 c語言並不支援字串資料型別。但是,它允許作為字元陣列來表示字串。因此在c語言中,字串變數就是任何合法...

字元陣列與字串

字元陣列與字串 6.3.1 字元陣列的逐個字元操作 案例6.5 從鍵盤輸入乙個字串,回車鍵結束,並將字串在螢幕上輸出。main i 0 while str x0d printf c str i printf n getch 1 字元陣列的定義 1維字元陣列,用於儲存和處理1個字串,其定義格式與1維數...

字元陣列與字串

char str 6 char str2 6 world printf s n str scanf s str2 for i 0 str i 0 i 說明 系統為了明確區分記憶體上的字串從屬關係,它會去尋找空字元,ascii嗎為0 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...