編輯:我意識到我可以將問題簡化為以下代碼塊:
unsigned char arr[20][50];
for(int i = 0; i<=20;i ){
strcpy(arr[i],"");
}
for(int i = 0; i<=20; i ){
for(int j = 0; j<5;j ){
strcat(arr[i],"0");
}
}
每當我使用strcat()or時strcpy(),我都會在 Clion 中收到以下警告訊息:
Passing 'unsigned char [50]' to parameter of type 'char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not
我不確定如何解決這個問題。提前感謝您的幫助。
uj5u.com熱心網友回復:
將引數傳遞給 C 標準庫字串函式unsigned char *(strcpy()如strcat()unsigned char *char *
strcpy((char *)arr[i], "");
uj5u.com熱心網友回復:
由于arr是一個靜態定義的陣列(維度是恒定的),arr[i]不會衰減為指標,但它本身就是一個 50 個字符的陣列。因此,在這種情況下,您必須使用&arr[i][0]. 那應該解決它。
arr[i][0] = '\0' than 順便說一句,要將陣列初始化為全空字串,使用strcpy會更有效。
而且,strcat效率也不高。由于您一次只附加一個字符,因此保留字串中下一個字符的索引并將字符存盤到其中更有意義。然后你只需要確保在完成后終止字串:
for(int i = 0; i <= 20; i ) {
int idx = 0;
for(int j = 0; j < 49; j ) {
arr[i][idx ] = '0';
}
arr[i][idx] = '\0';
}
而且如果使用這種方法,就不需要初始化陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434826.html
