У меня проблема с строками C. У меня есть массив char char_array[256] = {0}
.C char [] и * char
Я выполнил этот массив с элементами 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);
Добавьте ваш код пожалуйста. –
@Jacob Jones Пожалуйста, укажите соответствующий код. –
'% s' означает печать строки *, которая представляет собой серию непустых символов, за которыми следует нулевой символ. Он прекратит печать, если найдет нулевой символ, а также вы получите удивительный вывод для непечатаемых символов (например, возврат каретки) –