fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define QTD 5 // Número de strings a ler
  6. #define MAX 10 // Tamanho máximo de cada string, incluindo o caracter terminal
  7.  
  8. char *colors[] = {
  9. "green",
  10. "red",
  11. "blue",
  12. "yellow",
  13. "brown",
  14. "white",
  15. "black"
  16. };
  17.  
  18. const int DIM = sizeof(colors) / sizeof(colors[0]); // Dimensão do vetor de cores
  19.  
  20. /* Verifica se a string pertence ao vetor de cores */
  21. int check(char *s) {
  22. // Elimina o '\n' que o fgets costuma apanhar na leitura
  23. if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0';
  24.  
  25. for (int i = 0; i < DIM; i++)
  26. if (strcmp(s, colors[i]) == 0)
  27. return 1;
  28. return 0;
  29. }
  30.  
  31. int main(void) {
  32. char line[MAX]; // Temporário
  33. char valid[QTD][MAX]; // Vetor com strings finais válidas
  34. int count = 0; // Contador de strings válidas lidas
  35.  
  36. /* Obtém a string, verifica se é válida, e copia para o vetor de resultado caso seja */
  37. for (int i = 0; i < QTD; i++) {
  38. fgets(line, MAX, stdin);
  39. if (check(line)) {
  40. strcpy(valid[count], line);
  41. count++;
  42. }
  43. }
  44.  
  45. /* Faz output do vetor final */
  46. printf("Foram identificadas %d strings válidas:\n", count);
  47. for (int i = 0; i < count; i++)
  48. printf("%s\n", valid[i]);
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5344KB
stdin
white
red
coisas
black
pois
stdout
Foram identificadas 3 strings válidas:
white
red
black