Перевод int в char

Функция по переводу строчных букв в заглавные и заглавных в строчные Понимаю, что функция должна выдавать "char". В текущем виде выдает "HELLO WORLD!(null)" Как мне INTовые "result" и "s[i]" из конца функции превратить в "char", что бы вернуть это "char" с помощью "return"?

char *to_alternating_case(const char *s)
{
  int len = strlen(s);
  for (int i=0; i<len; i++)
  {
    int letter = s[i];
        if (isalpha(s[i])){
               int result;
               if (isupper(s[i])){
                result = letter + 32;
               }
               else
               {
                result = letter - 32;
               }
               printf("%c", result);
  }
        else
        {
        printf("%c", s[i]);
        }
  }
  return 0;
  }

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Функция должна создавать новую строку - модифицированную копию s. Откуда взять память? Только выделить её из кучи (malloc):

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

char *to_another_case(const char *s) {
    const size_t len = strlen(s);
    char *result = malloc(len + 1);
    if (result == NULL) {
        return NULL;
    }

    for (size_t i = 0; i < len; ++i) {
        result[i] = ((isupper(s[i])) ? tolower : toupper)(s[i]);
    }
    result[len] = '\0';
    return result;
}

int main() {
    char *r = to_another_case("Hello, World!");
    puts(r);
    free(r);
}
$ gcc -std=c11 -pedantic -Wall -Wextra -Werror -O3 temp.c && ./a.out 
hELLO, wORLD!
→ Ссылка