Я пытаюсь создать функцию, которая получает строку текста, а затем инвертирует каждое слово и возвращает массив строк. Это мой код. Что-то явно не так. Любые предложения по моим ошибкам здесь?c функция инвертировать строку
char** function(char* str, int* pn)
{
char temp[21];
int n_of_spaces = 0, i = 0, d = 0;
for (int i = 0; str[i]; i++)
if (str[i] == ' ')
n_of_spaces++;
*pn = n_of_spaces + 1; //should be number of words
char** s = (char**)calloc(*pn, sizeof(char*));
while (str[i])
{
d = 0;
if (i != 0)
i++;
while (str[i] != ' ' && str[i] != 0)
{
i++;
d++;
}
for (int j = 0; j < d; j++)
temp[j] = str[i];
for (int k = 0; k < *pn; k++)
{
s[k] = (char*)calloc(d + 1, sizeof(char));
strcpy(s[k], temp);
invert(s[k]); //inverts a word
}
}
return s;
}
// Heres главный
int main()
{
int n_of_words;
char line[100];
gets(line);
char** s = function(line, &n_of_words);
for (int i = 0; i < n_of_words; i++)
{
puts(s[i]);
free(s[i]);
}
free(s);
return 0;
}
void invert(char* s)
{
int t;
for (int i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
t = s[i];
s[i] = s[j];
s[j] = t;
}
}
ошибка времени выполнения, он ничего не делает, видимо – smiljanic997
Можете ли вы пройти через это с помощью отладчика? – chrisaycock
это всего лишь одна функция кода, но я думаю, что логика за ней неверна – smiljanic997