1
resposta

Mudar os caracteres minusculos para maiusculos subtraindo 32 do caractere

Basicamente o que me foi pedido era que eu tinha que fazer a mudança de uma string minuscula para maiuscula. EX: Batata ---> BATATA Porem esta dando um erro: Segmentation fault (core dumped)

#include <stdio.h>

void uppercasestyle(char frase[]){
int i = 0;
while(frase != '\0'){
    if(frase[i]>='a'&&frase[i]<='z'){
    frase[i] = frase[i] - 32;
    }
    i++;
}
frase[i] = '\0';

}


int main() {

    char strinori[50] = " ";
   printf("Digite o que vai ser convertido: ");
  fgets(strinori, 50, stdin);
  printf("\n");
  printf("String original: %s \n", strinori);

  uppercasestyle(strinori);
  printf("String modificada: %s", strinori);
   return 0;
}
1 resposta

Infelizmente o C não trata Strings de maneira muito intuitiva. Na segunda linha da sua função uppercasestyle() você usou while(frase != '\0'), enquanto, talvez, o correto fosse comparar cada caractere. Para tal use while(frase[i] != '\0'). Isto se dá, pois no C uma string é constituída, internamente, por uma sequência de caracteres (vários chars), ao usar frase != '\0' você está dizendo que todo conjunto tem que ser diferente, porém o C não funciona desta maneira, tendo assim a necessidade de iterar por cada elemento.