字串可以用陣列(指標常量)或指標變數表示,如下:
char *str1=」hello world」; //事實上是把字串的位址賦給指標或變數
char str2[12]=」hello world」; //注意 陣列只能在定義時賦初值。若寫成char str2[12]; str2[12]="hello world";是錯誤的。
鍵盤輸入:
char *str3;
char str4[20];
str3 = "iwant to buy ipad\n";//可以把字串位址賦給變數
scanf("%s",str4);
str3是指標變數,不可以由輸入的方式來完成賦值,指標變數的賦值只能賦予位址,決不能賦予任何其它資料,否則將引起錯誤,故不能用鍵盤輸入。
str4是乙個陣列,它是指標常量,所以str3已經在固定的位址,不可以再把乙個字串位址賦值給它。
輸出:
printf("%s\n", str2); // %s 位址
printf("%s\n", str2);
for(i=0;*str!=』\0』;i++)
常用的字串函式
標頭檔案string.h
1 字串的長度表示此字串有多少個字元,不包括空字元(『\0』)結束符,但是包括空格字元等。計算字串長度的函式為strlen(str1);
int stringlength(char *p)
}
2 字串的拷貝庫函式為strcpy(str1,str2),表示從str2字串的第乙個字元,逐一地複製到str1字串。
void mystringcopy(char *dest, char *source )
}
如只需要拷貝n個字元時。。。。。。
void mystringcopy_n(char *dest, char *source ,int n)
}
3 字串的連線
庫函式strcat(str1,str2)將str2字串拷貝到str1字串的尾端。注意,str1必須要分配足夠的空間
void my_strcat(char *str1,char *str2)
}
如果只需要連線n個字元,則可呼叫庫函式strncat.
strncat(str1,str2,n);
意思是將str2的前n個字元連線到str1;
void my_strncat(char *str1,char *str2,int n)
}
4 字串的比較
庫函式 strcmp(str1,str2);
void my_strncat(char *str1,char *str2,int n)
}
若只要比較前面幾個字串
int my_strcmp(char *str1,char *str2,int n)
若比較兩字串且忽略大小寫的差異,則可編寫程式如下:
intstringignorecompare(char *x, char *y)
return*x-*y;
}
C 字串指標與字串陣列
在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...
C 字串指標與字元陣列
visual studio 2012 系統分配時儲存位置不一樣 字串指標在初始化時儲存在靜態區是常量,初始化後不能修改 字元陣列 是存放在棧中的,值是可以修改的 include stdafx.h include include include include include include char...
字元指標與字串
例項1 include using namespace std int main 執行結果 error 例項2 include using namespace std int main 執行結果 helloworld例項3 include using namespace std int main 執...