用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 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...