c語言字元數組
Ⅰ c語言定義字元串數組
C語言字元串數組中的每一個元素均為指針,即有諸形如「ptr_array[i]」的指針。由於數組元素均為指針,因此ptr_array[i]是指第i+1個元素的指針。
例:如二維指針數組的定義為:char *ptr_array[3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};
(1)c語言字元數組擴展閱讀
字元串數組數組元素表示方法:
數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。如為小數時,C編譯將自動取整。
例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。在C語言中只能逐個地使用下標變數, 而不能一次引用整個數組。
Ⅱ c語言字元串數組和字元數組有什麼區別
是字元數組
字元串數組是指數組裡面的元素是字元串
比如 char *s[2]={"aa","bb"}是字元串數組
Ⅲ C語言字元數組能存入多少字元
在使用scanf函數中,scanf("%s", s);表明將輸入的字元串存放在以s[0]為初始地址的開始,跟你的數組大小無關
假設s[0]的地址位1,輸入的數據為abcde,那麼數據就會依次放在地址1~5的位置,第6個位置會自動添加字元串結束符'\0',但你的數組s[0]=a,s[1]=b,s[2]=c; 懂?
這樣雖然沒有語法錯誤,但實際上數組越界了,因為你不知道地址3之後的位置是否被使用,假設我地址4為變數i,那麼i的值就為輸入的字元d了。
Ⅳ C語言字元數組問題
這就是C語言個性,你可以訪問你定義的數組以外的地方,甚至可以訪問a[10000]. c語言並不檢測是否越界。 只不過越界訪問是不安全的,有可能訪問到系統敏感的內存位置,導致操作系統殺掉進程。
一句話c數組的訪問是否越界,需要程序員控制。
Ⅳ C語言字元數組
輸出LBLMNP吧。
首先strcat的函數是把a,b兩個數組連接起來,於是a數組裡面就成了ABLMNP
然後i++的值是i,也就是把i用了再加1;
於是b[1]=a[1];(b變成「LBNP")
b[2]=a[2];(b變成」LBLNP")
……
當i為6時while的條件不滿足,跳出
最後輸出b中的字元串
Ⅵ C語言中怎麼把字元數組里的數據存放到字元串數組中
利用C語言標准庫中的strtok()函數,可以輕鬆快捷的將以空格分隔開的一串字元分成多個子串,存放到字元指針數組中。
函數說明:
#include <string.h> //頭文件
char *strtok(char *str, const char *delim);
strtok()用來將字元串分割成一個個片段。參數str指向欲分割的字元串,參數delim則為分割字元串中包含的所有字元。當strtok()在參數str的字元串中發現參數delim中包涵的分割字元時,則會將該字元改為 字元。在第一次調用時,strtok()必需給予參數str字元串,往後的調用則將參數str設置成NULL。每次調用成功則返回指向被分割出片段的頭指針。當沒有被分割的串時則返回NULL。
參考代碼:
Ⅶ 請教C語言字元串和字元數組的比較問題
c語言的字元數組有兩種,比較方式也有所不同。
1
字元串。
c語言的字元串是用字元數組表示的。約定以'\0'(ascii碼0)作為結尾標記。
對於字元串類的字元數組,可以用string.h中的strcmp函數進行比較。
int
strcmp(char
*str1,
char
*str2);
其比較規則為:
a,
從左向右依次比較每個元素;
b,
如果出現str1的元素ascii碼比較大,則返回1;如果出現str2元素ascii碼比較大,則返回-1。如果相等,則繼續。
c,
如果一直相等,直到遇到\0,這時檢查是否均為\0,如果均為\0,那麼返回0;
d,
如果str1到\0,而str2沒到,返回-1;
否則返回1。
總結規則就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。
2
不帶\0結束的字元數組。
對於此類數組,沒有庫函數可供使用,只能自己寫函數進行比較。規則可以仿照strcmp的規則。
由於沒有\0作為結束,所以參數中必須傳入每個數組的元素個數。
int char_array_cmp(char *s1, int l1, char *s2, int l2)
{
int lmin = l1>l2? l2:l1; //較小長度者。
int i;
for(i = 0; i < lmin; i ++)
if(s1[i] > s2[i]) return 1;
else if(s1[i] < s2[i]) return -1;
//運行到這里,表示所有已判斷元素均相等。
if(l1 == l2) return 0;
if(l1 > l2) return 1;
return -1;//l1 < l2的情況。
}
Ⅷ c語言中怎樣把一個字元數組付給另一個字元數組
直接將字元數組的數組名賦值給另一個字元數組即可。
比如:
chara[]="adsdfs";
charb[10];
b=a;//就是將字元數組a賦給字元數組b
puts(a);//輸出adsdfs
puts(b);//輸出adsdfs
Ⅸ c語言字元數組
char
temp[100]="
",中間空格算一個字元
char
c[1]=''
''定義
str[i]=c[0]不表示清空數據
Ⅹ c語言字元串數組
字元串輸出在遇到'\0'字元前不會停
char*
p
=
"123\0456";
printf(p);
//
輸出123
p[3]
=
'&';
printf(p);
//
輸出123&456
你代碼里為什麼那樣是因為多位數組的存儲空間是連續的
兩句strcpy後arr數組是變這樣
you.me.?
其中.代表空字元,?是未使用的空間