Перевод 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!