C char []和* char

时间:2014-11-30 20:30:28

标签: c pointers char

我对C字符串有疑问。我有数组char char_array[256] = {0}

我用char元素完成了这个数组。当我打印这些元素printf("%c", char_array[0]);printf("%c", char_array[1]);等时,值是正确的。但是当我尝试打印printf("%s", char_array);时,它什么都没打印......

我也有void function(char* char_pointer)功能。我正在尝试返回数据strcpy(char_pointer, char_array)。但它没有任何回报......

请帮助我,如何从功能中返回数据,以后在外部功能,我可以打印printf("%s", char_pointer_from_function)

更新:

功能:

void unmarshal_packet(char *packet)
{
    char packet_size_string [10] = {0};
    char unmarshaled_data [2000] = {0};
    int counter = 0;

    while (packet[counter] != ':' && counter < strlen(packet))
    {
        packet_size_string[counter] = packet[counter];
        counter++;
    }

    counter = strlen(packet_size_string) + 1;

    for (counter; counter < strlen(packet); counter++)
    {
        if ((packet[counter] != '\r') && (packet[counter] != '\n'))
        {
            unmarshaled_data[counter - (strlen(packet_size_string) + 1)] = packet[counter];
        }
    }

    // printf("%c", unmarshaled_data[0]);
    // printf("%c", unmarshaled_data[1]);
    // printf("%c", unmarshaled_data[2]);
    // printf("%c", unmarshaled_data[3]);
    // printf("%c", unmarshaled_data[4]);
    // printf("%c", unmarshaled_data[5]);
    // printf("%c", unmarshaled_data[6]);
    // printf("%c", unmarshaled_data[7]);
    // printf("%c", unmarshaled_data[8]);
    // printf("%c", unmarshaled_data[9]);

    printf("%s", unmarshaled_data);

    unmarshaled_data[counter - (strlen(packet_size_string) + 1)] = '\0';

    strcpy(packet, unmarshaled_data); 
}

函数调用:

strcpy(buffer, " \nWellcome to Yes / No game server! \n");
unmarshal_packet(buffer);

1 个答案:

答案 0 :(得分:1)

字符串是非NULL(ASCII值0)字符的序列,后跟表示字符串结尾的字符。例如,如果您的第一个字符为NULL,则表示字符串,因此不打印任何内容。在打印之前不知道你在阵列中放了什么,我不知道应该打印什么。