Estou estudando C por conta própria, motivo de minhas dúvidas.
Olhando diversas formas de declarar uma variável do tipo char, percebi que posso também declarar elas assim, sem definir seu tamanho: char Nome;
Como consigo atribuir um valor para ela via código?
Pois isso abaixo não funciona: strcpy(Nome, "My God");
strcpy(Nome, "M"); // Neste caso cheguei a pensar que 1 caracter ela aceitaria, mas também não
Ainda no Caso acima, como ela não possue um tamanho, existe uma forma de eu colocar nela um valor, atribuindo um tamanho neste caso?
OBS:
- Respostas para declarar como: char Nome[100] não me servem, pq assim sei que funciona!
- ISSO não se trata de exercícios de Curso ou Faculdade, Já informei, Estudo por minha conta!
RESPOSTA QUE USEI
Resposta que SamL deu e que me ajudou a resolver a questão, junto claro dos outros que adicionaram ainda mais informações. Como SamL apagou o que escreveu, resolvi POSTAR aqui para ajudar quem ler esse tópico a Resposta Original que eu havia salvo!
MELHOR RESPOSTA
SamL - Samuel Leonardo - Enviado em 06/05/2018 - 21:44h
Quando você ver algo assim: char letra; é porque você só pode iniciar ela dessa forma: char letra = 'A'; ou qualquer outra letra da tabela ASCII. Pesquise no google sobre a tabela, vá ao google images e veja uma tabela ascii pra ter ideia como é. por exemplo, o que você tem que saber é que caracteres minusculos são diferentes de maiusculos, pois, você não pode representar o mesmo caractere com o mesmo valor. Sendo assim char repesenta um número, apesar de ser chamado de char, ele pode ser um numero entre 0 e 256 (até 255) esse é o unsigned char (caractere sem sinal), ou com sinal com valores de -128 até 127.
Exemplos de aplicação:
char letra = 'C';//certo, letra é um 'C' maiusculo inciado com uma =letra entre aspas simples
char letra = "nome";//errado, aqui "nome" é uma string (cadeia de caracteres)
char nome[100] = "Samuel";
char letra = nome[2];//certo, aqui letra tem valor 'm' (terceiro caractere da string nome
char letra = 83;//também é certo, aqui 83 é a letra 'S' (maiusculo)
int S = 83;
char letra = (char)S; //converte S para char e então letra vira 'S' maiusculo
O que você também tem que ter em mente é que na tabela ASCII os carcteres também são dispostos numa ordem para facilitar seu uso:
char letra = 'a' + 2;// letra agora é 'c' minusculo, pois o alfabeto minusculos está disposto sequencialmente
A Linha abaixo está errada Foi apenas falta de atenção!
char letra = '0' + 5;//agora letra é '5' pois os algarismos também são dispostos sequencialmente
Para ler caracteres do terminal você pode usar:
char letra;
scanf("%c", &letra);
Ou entçao
letra = getchar();
Para escrever caracteres na tela você pode usar:
char letra = 'A';
printf("letra é %c\n", letra);
Vai imprimir no terminal: "letra é A"