簡體   English   中英

將1個單個字符復制到字符串中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM