可以用scanf()接受字串,它不接收空格
char str[100]="Good morning";
scanf("%s",str);
str中的內容是Good
char str[100]="Good morning";
scanf("%3s",str);
str中的內容是Goo
char str[100]="Good morning";
scanf("%5s",str);
str中的內容是Good.
用scanf()輸入字串時,數組名前不加&
輸入字串函數gets(),它可以接收空格,以斷行符號結束輸入
例如:char str[100]=" ";
gets(str);
puts(str);
輸入字元函數getchar()和getch()
getchar()輸入回顯
getch()不回顯,而且可以接收'\r',常用於輸入密碼操作,需要#include<conio.h>
可以用print'f()輸出字串,找'\0'結束,否則一直輸出。
char str[100]="ABC";
printf(“%s",str); //輸出ABC
char str[100]="ABC";
str[1]='\0';
printf("%s",str); //輸出A
char str[4]="ABC";
str[3]='D';
printf("%s",str); //錯誤,沒有\0
其他輸出函數:
輸出字串函數puts()
例如:char str[100]="ABC";
puts(str);
輸出字元函數putchar();
例如:char str[100]="ABC";
putchar(str[0]);
putchar('\n');
記憶體賦值函數:memset()
memset用法有:
memset(szName,'\0',100);//表示把數組szName前100位的元素清0
memset(szName,'A',5);//表示把數組前5位的元素都替換成A;
memset(szName+5,'A',5);//表示從數組下標為5的元素開始往後5個元素都替換成A
字串拷貝stcpy()
格式為strcpy(字元數組1,字元數組2);
strcpy(字元數組名,字元常量);
例如:char str[]="1234";
char szName[100]="";
strcpy(szName,str);
strcpy(szName,"1234");
char szName[100]="";
strcpy(szName,"12345");
strcpy(szName,"Li");
puts(szName);//結果是Li, \0也拷貝過去。
strncpy()
strncpy有如下用法:
//表示把數組下標為x的元素開始往後按順序替換成A,B,C
strncpy(szTemp+x,"ABC");
//只複製“1235”的前兩個字元給str字串
strncpy(str,"12345",2);
//把strB的下表為y之後的z個字元,複製給strA以下表為x的字元後面去,(包括xy的元素)
strncpy(strA+x,strB+y,z);
注意:strcpy不檢查目標字串的大小,當目標字串記憶體不足,會導致崩潰。
字串比較strcmp
格式:strcmp(字串1,字串2);
比較相同位置上的ASCII碼值的大小(常用於比較字串是否相等)
兩個字串相等返回0,字串1大於字串2返回正數,否則返回負數。
可以有如下使用方法:
strcmp(s1,s2);
strcmp(s,"123");
strcmp("123",s);
字串拼接strcat
格式:strcat(字元數組1,字元數組2);
功能:吧字元數組2中的字串串連到字元數組1中字串的後面,並刪去字串1後的串標誌"\0" 本函數傳回值是字元數組1的首地址。
字串轉換函式:
atof,,atoi ,atol
字串測試函數:
isalum,isalpha