關於字元陣列的指標移動操作

2021-06-19 00:33:59 字數 1690 閱讀 5846

char e[14]=;

printf("%s\n",e+5);//列印從第六個字元開始的後續字元,e+5表示把陣列指標移到第6位

printf("%s\n",&e[5]);//列印從第六個字元開始的後續字元,&e[5]表示即第6位的位址,這一句表示第6個字位址開始列印

char sendmessage[68]= ;

char a[68]= ;

sendmessage[0] = 0xab;

sendmessage[1] = 0xa5;

sendmessage[2] = 0x00;

sendmessage[3] = 0x1d;

sendmessage[4] = 0x00;

sendmessage[5] = 0x01;

strcpy(&sendmessage[6],"user,password;admin,123456;");

sendmessage[33] = 0xdc;

sendmessage[34] = 0xab;

sendmessage[35] = 0xa5;

sendmessage[36] = 0x00;

sendmessage[37] = 0x1d;

sendmessage[38] = 0x00;

sendmessage[39] = 0x01;

strcpy(&sendmessage[40],"user,password;admin,789009;");

sendmessage[68] = 0xdc;

char b[27]=;

/* strncpy(b,sendmessage,7,27);

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

memcpy(a,sendmessage,68);

memset(b, 0, 68);

memcpy(b, a + 34, 68);

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

*/ memcpy(b, &sendmessage[6], 33);

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

memmove(&sendmessage[0], &sendmessage[6], 33);

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

int length = sizeof(sendmessage);

printf("1*************************=\n");

printf("%d\n",sizeof(sendmessage));//不會有00問題

printf("%d\n",strlen(sendmessage));//會有00問題

printf("2*************************=\n");

char tt[33]=;

memcpy(tt,sendmessage,33);//不會有00問題

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

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

printf("3*************************=\n");

for(int i=0;i<33;i++)

printf("4*************************=\n");

strcat(sendmessage,tt);

for(int i=0;i<66;i++)

關於字元陣列和字元指標

include void main 對於字元陣列a,其中的內容是可以改變的。可以再次對某個元素賦值 如 a 2 r 正確 a中存放首字元的位址,但不可被改變。a adeafsa 錯誤 對於字元指標變數p,它指向了乙個字串常量,而常量被儲存在常量區,是不可改變的 如 p r 錯誤 不過可以對指標變數p...

關於指標 與 字元陣列

在我們寫 中使用到指標的字串時,經常會出現執行錯誤,大部分出現的錯誤是試圖去改變指標的字串的內容。指標的字串的內容是儲存在靜態資料區的,是不能夠改變的。需要使用字元陣列。例如改變 char p abcdef p 1 d 這是錯誤的不能改變裡面的內容,但是可以使用裡面的資料 char p abcdef...

關於字串陣列,指標定義陣列

今天測了乙個程式,發現了一些不懂的問題,下面貼上 和自己的一些想法。1.用指標指向乙個字串,並嘗試修改字串。char p hello p 2 c printf the word is s n p 編譯沒有問題,但是執行沒有任何的輸出。我們都知道p指向 hello 的首字母 h 的位址,但printf...