#include <stdio.h>
typedef struct _Text {
char *str;
int length;
int counter;
} *Text;
Text text(char *txtStr){
Text txt= malloc(sizeof(*txt));
txt->str=txtStr;
txt->counter=1;
txt->length=sizeof(*txtStr);
return txt;
}
int main(void) {
Text txt= text("hello");
return 0;
}
我需要提取陣列長度但是指標只回傳第一個元素的大小,如何確定陣列的長度?
uj5u.com熱心網友回復:
C 中的字串是由 NUL(又名'\0')終止的一系列字符,因此您可以計算有多少個字符,例如
char *pos = txtStr;
txt->length = 0;
while(*pos != '\0')
{
txt->length ;
pos ;
}
或者因為生命太長而無法繼續撰寫執行此類操作的代碼,因此有一個標準函式可以為您完成所有艱苦的作業,稱為 strlen
txt->length = strlen(txtStr);
您還想制作一個副本,txtStr因為它的內容可能會在您新創建的內容之前超出范圍Text...
uj5u.com熱心網友回復:
使用strlen代替sizeof。
uj5u.com熱心網友回復:
我想補充一點:使用 malloc 后,您應該在不再需要時釋放該記憶體。我想這只是一個示例代碼,但最好習慣于這樣撰寫。如果處理不當,回傳分配的記憶體可能會出現問題(這里的好答案:從函式回傳堆分配的指標是否不禮貌?)
同樣,我知道你的問題純粹是一個例子,但最好注意。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/341523.html
