olá a todos, bom eu tenho algumas duvidas, podem parecer, ou até ser mto bestas, , mais eu resolvi postar mesmo assim...
seguinte, observem a seguinte declaração:
char nome[10];
scanf("%s", nome);
1º - Na var nome cabem 10 caracteres, se eu digitar um nome com 20 caracteres,
a var nome vai se redimensionar???eu fiz o seguinte programa:
#include <stdio.h>
int main(){
char nome[10];
int i;
printf("\nDigite o nome: \n");
scanf("%s", nome);
printf("Você digitou: %s", nome);
}
se eu digito um nome com 20 caracteres, ele eh exibido normalmente depois pela função printf, outra coisa, se oq eu digitar espaco, a função scanf naum pega o valor, ex:
Digite o nome:
Matheus Ricci
Você digitou: Matheus
isso seria resolvido com a função gets(), ficaria assim:
int main(){
char nome[10];
int i;
printf("\nDigite o nome: \n");
gets(nome);
printf("Você digitou: %s", nome);
}
Funciona perfeitamente, mais se eu digitar mais de 10 palavras, eu recebo um Segmentation Fail, pois eu sobrecarreguei a variavel nome, estou certo???, outra coisa, na hora de compilar eu recebo um warning dizendo que a função gets é perigosa e não devia ser usada, e muitas vezes a execução pula um gets, isso não ocorre neste programa, mais se ocorrece, a solução seria:
int main(){
char nome[10];
int i;
printf("\nDigite o nome: \n");
gets(nome); /* gets pulada */
gets(nome); /* gets valida */
printf("Você digitou: %s", nome);
}
ouvi dizer que isso é buffer, essa afirmação está correta???
bom resumindo tudo, gostaria de saber se existe uma função de entrada de dados que tivesse ou fosse parecida com a sintexe:
funcao(tipo_da_variavel, variavel_de_destino, limite_de_caracteres);
ou até mesmo
get*(var_destino, limite_de_caracteres)
alguem da um help