簡體   English   中英

無法從char **獲取字符串

[英]Cannot get the string from char**

我在這里使用雙字符指針的程序

#include <stdio.h>
#include <stdlib.h>

void loadarray(char ** message)
{
    int size = 10;
    *message = (char*)malloc(size * sizeof(char));
    int i = 0;
    char stringarr[10]={"hello"};
    char msg_byte;

    for (i = 0; i < size; i++)
    {
        //load stringarr into msg_byte
        msg_byte = stringarr[i];
        char* pmsg      = *message;
        *pmsg = (char)msg_byte;
        printf("data location %d is %X\n", i, *pmsg);
        pmsg++;

    }
}


void main()
{
    char* arr;
    loadarray(&arr);
    printf("array = %02X %02X %02X %02X %02X\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
}

我的輸出是

data location 0 is 68
data location 1 is 65
data location 2 is 6C
data location 3 is 6C
data location 4 is 6F
data location 5 is 0
data location 6 is 0
data location 7 is 0
data location 8 is 0
data location 9 is 0
array = 00 00 00 00 00

由於某種原因,我不能只將字符串傳遞回main。 我究竟做錯了什么? 首先感謝您的幫助。

char* pmsg = *message;

您將在每次迭代中初始化pmsg ,因此它始終指向第一個字符,並將其放在for循環之前。

那是因為你有:

    char* pmsg      = *message;

在循環。 pmsg僅指向*message的第一個對象。

更改函數loadarray以便在for循環之前初始化pmsg

void loadarray(char ** message)
{
    int size = 10;
    *message = malloc(size * sizeof(char));
    int i = 0;
    char stringarr[10]={"hello"};
    char msg_byte;

    char* pmsg      = *message;
    for (i = 0; i < size; i++)
    {
        //load stringarr into msg_byte
        msg_byte = stringarr[i];
        *pmsg = (char)msg_byte;
        printf("data location %d is %X\n", i, *pmsg);
        pmsg++;

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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