Я написал алгоритм для извлечения слов из строки и хранения их в массиве, однако я получаю нежелательный результат, и я не могу понять, почему. вывод - очень странные персонажи.Программа печатает мусор вместо фактического возвращаемого значения из вызова функции
#include <stdio.h>
#include <windows.h>
char *extract(char *String)
{
char str[10][20];
int x = -1,y = 0,z = 0;
for(size_t n = 0 ; n < strlen(String) ; n++)
{
y++;
if(String[n] == ' ') y = 0, z = 0;
if(y == 1) x++;
if(y > 0)
{
str[x][z] = String[n];
z++;
str[x][z] = '\0'; //Comment this*********
}
}
/*for(int n = 0; n < 10; n++) Uncomment this*****
{
str[n][3] = '\0';
}*/
return str[7];
}
int main()
{
printf("WORD : %s\n",extract("POL POL POL POL POL POL POL POL POL POL"));
system("PAUSE");
return 0;
}
где ошибка в коде?
Примечание: я также получаю странные символы, когда я использую printf и strlen где-то в другом месте.
Вот рабочий пример без UB, который копирует результат в выходной буфер: http://ideone.com/54aZh0 – AndyG