// Breve estudo da função scanf(), e formatação de entrada para strings - revisão conceitual // Pedro Soares da Silva Santos #include #include // Necessário caso se execute em janela temporária, p.e. Dev-C++ (*1 continua na l. 58) // Função utilizada para substituir o fflush(stdin), que não é padronizada. // A função abaixo é válida em qualquer plataforma. void limpa_stdin() { int c; do { c = fgetc(stdin); } while (c != '\n'); } int main() { char frase[16]="\0"; // Preparando o vetor com "\0" (vazio) para o caso de *nenhum* caractere ser lido. int i; printf("Digite sua frase (normal): "); // Digite "Rio de Janeirooo", recebe "Rio de Janeiroo" scanf("%15[^\n]",frase); // Para apenas no "ENTER" ou nos 15 caracteres (garante integridade da memória) printf("Frase: \"%s\"\n",frase); limpa_stdin(); // Necessário para evitar que a sobra da entrada padrão (neste caso, o teclado) seja recebida pelo próximo scanf() frase[0]='\0'; // Limpa o vetor para a próxima entrada printf("Digite sua frase: "); // Digite "Rio d", recebe "Rio" scanf("%15s",frase); // Recebe apenas 15 caracteres "não-brancos" printf("Frase: \"%s\"\n",frase); limpa_stdin(); // Necessário para evitar que a "sobra" da string seja recebida pelo próximo scanf(). frase[0]='\0'; printf("Digite sua frase (para no \"e\"): "); // Digite "Rio de", recebe "Rio d" scanf("%15[^e\n]",frase); // Recebe apenas "Rio d" pois para no "e", "\n" incluído para liberar caso todos sejam válidos printf("Frase: \"%s\"\n",frase); limpa_stdin(); frase[0]='\0'; // Abaixo: digite "Rio de", recebe "Rio d" printf("Digite sua frase (para em qualquer que nao seja \" \", \"d\", \"i\", \"o\" nem \"r\": "); scanf("%15[Rio d]",frase); // Recebe apenas "Rio d" pois para depois de " ", "d", "i", "o" e "R" printf("Frase: \"%s\"\n",frase); limpa_stdin(); frase[0]='\0'; printf("Digite sua frase - caracteres de a a h, A a H: "); //Digite, p.e. "abc-def-ghi", recebe "abc-def-gh" scanf("%15[a-hA-H]",frase); // Recebe das letras 'a' até 'h' e além do caractere '-' pois está no fim (ou início) da expr. printf("Frase: \"%s\"\n",frase); limpa_stdin(); frase[0]='\0'; printf("Digite sua frase com caracteres exceto de 'a' a 'i' maiusculo ou minusculo: "); scanf("%15[^a-iA-I\n]",frase); // Recebe qualquer exceto de 'a' a 'i' maiúsculo ou minúsculo printf("Frase: \"%s\"\n",frase); system("PAUSE"); // (*1) Evita que a janela temporária (em MS-Windows) se feche após a execução return(0); }