[C] Obter texto e apresetna-lo - C/C#/C++ - Clube do Hardware
Obter texto e apresetna-lo
Por Estudante0123, 19 de junho de 2018 em C/C#/C++
Estudante0123 27
Olá, estou fazendo em partes um codigo. A primeira parte deverá receber, pelo teclado, um texto. Pensei em fazer dessa forma mais simples:
printf ("Insira seu texto: ");
scanf ("%s", &texto);
printf ("%s", texto);
Mas só captura a primeira linha do texto, onde posso estar errando? Obrigado.
Leonardo0308 272
bom dia, @Estudante0123
Se você não usar o vetor no char você só vai capturar uma letra, há e pode mudar o 50 para o tamanho que você acha que a frase vai ter, sempre chutando para mais.
Então tenta usar o
Ainda sim não vai. Pensei em fazer da seguinte forma
char texto , caractere;
caractere = getchar ();
texto[i] = caractere;
} while ( caractere != 13) ;
Mas preciso fazer diferentes tipos de teste, com vetores de tamanhos diferentes, então não posso limitar ele. O que quero dizer é que tenho teste de texto [10], assim como text [100], e o programa deveria lidar bem com todos os teste
Me manda seu código completo por favor.
// Receber texto
texto = caractere;
} while ( caractere != "13")
//imprimir texto
O exercicio pede para que o programa suporte diferentes tipos de strings, com tamanhos diferentes. Modifiquei a principio e consegui chegar até ai. Contudo os casos de testes utilizam textos com varias linhas ( os testes são inseridos utilizando ctrl v), então não posso colocar um
while ( caractere != '\n') ;
como limitador, mas também não sei como prosseguir
@Estudante0123 Strings são armazenadas em vetores de caracteres, não dá pra armazenar uma string em uma única variável char.
O vetor sempre precisa ser grande o suficiente para armazenar a string inteira (todos os caracteres não nulos da string mais o caractere nulo '\0' indicando o fim da string).
Então algo como:
Pode armazenar uma string de até 99 caracteres (pois nesse caso extremo a 100ª posição do vetor deveria armazenar o caractere nulo '\0' que indica o fim da string).
@Estudante0123 Olá. É preciso a formatação adequada no scanf para ler um texto, só o %s não vai dar certo:
char texto[500];
printf("Digite o texto: ");
scanf("%[^\n]s", texto); // aqui o scanf está formatado p receber um texto
printf("Texto: %s\n\n", texto);
@giu_d %[ é um especificador, e %s é outro especificador de tipo da função scanf(), embora ambos sejam especificadores de string. No caso o especificador %[ é um especificador de string com um conjunto específico de caracteres.
Logo, %[^\n] já está completo, não há necessidade de colocar o s no fim, pois esse s não tem função de captura, colocar esse s só dirá para o scanf esperar que após a string capturada deve existir um caractere 's', ou seja espera que seja uma string assim: "texto digitado e capturado pelo scanf\ns".