[英]Copying 1 single character into string
我正在嘗試使用自定義的Abstract數據類型創建ASCII表
typedef struct dictionary {
int code;
char* str;
}dictionary;
嘗試執行以下代碼時遇到異常
dictionary table[4096];
void preset() {
for (int i = 0; i < 256; i++) {
char temp = 0 + i;
table[i].str = (char *) malloc(sizeof(char));
strcpy(table[i].str,temp);
}
}
我不明白我如何錯誤地訪問內存,有人可以幫忙嗎?
三個問題:
1)您必須為目標字符串的空終止符分配一個額外的字節:
table[i].str = malloc(2);
2)您必須將指向源的指針傳遞給strcpy(這可能導致您的段錯誤):
strcpy(table[i].str,&temp);
3)源字符串必須以null終止,這不在您的代碼中。 直接修復不容易。 但是無論如何您都不需要strcpy(),只需直接設置兩個字節即可:
table[i].str[0] = i;
table[i].str[1] = 0;
然后,它應該會按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.