fork download
  1. #include <stdio.h>
  2.  
  3. // Retorna 0 se as strings sao iguais, -1 se forem diferentes
  4. int CompareStrings(char* a, char* b);
  5.  
  6. int main()
  7. {
  8. // Ambas as strings tem quebras de linha
  9. char firstTestA[] = "A casa era mais bonita \ndo que \nele imaginou\n";
  10. char firstTestB[] = "A\n casa era mais bonita do que ele imaginou\n";
  11.  
  12. int comp = CompareStrings(firstTestA, firstTestB);
  13. printf("Primeiro teste: %d\n", comp);
  14.  
  15. // Uma das strings tem quebras de linha
  16. char secondTestA[] = "A casa era mais bonita \ndo que \nele imaginou\n";
  17. char secondTestB[] = "A casa era mais bonita do que ele imaginou";
  18.  
  19. comp = CompareStrings(secondTestA, secondTestB);
  20. printf("Segundo teste: %d\n", comp);
  21.  
  22. // Nenhuma das strings tem quebra de linha
  23. char thirdTestA[] = "A casa era mais bonita do que ele imaginou";
  24. char thirdTestB[] = "A casa era mais bonita do que ele imaginou";
  25.  
  26. comp = CompareStrings(thirdTestA, thirdTestB);
  27. printf("Terceiro teste: %d\n", comp);
  28.  
  29. system("pause");
  30. return 0;
  31. }
  32.  
  33. int CompareStrings(char* a, char* b)
  34. {
  35. int indexA, indexB;
  36. for(indexA = 0, indexB = 0; indexA < strlen(a) || indexB < strlen(b); ++indexA, ++indexB)
  37. {
  38. if(a[indexA] == '\n')
  39. {
  40. if(++indexA >= strlen(a))
  41. indexA = strlen(a);
  42. }
  43.  
  44. if(b[indexB] == '\n')
  45. {
  46. if(++indexB >= strlen(b))
  47. indexB = strlen(b);
  48. }
  49.  
  50. if((a[indexA] == '\0' || b[indexB] == '\0') || (a[indexA] != b[indexB]))
  51. break;
  52. }
  53.  
  54. // Se ambos terminaram, as strings contidas são iguais.
  55. if( a[indexA] == '\0' && b[indexB] == '\0' )
  56. return 0;
  57. else
  58. return -1;
  59. }
  60.  
Success #stdin #stdout #stderr 0s 2292KB
stdin
Standard input is empty
stdout
Primeiro teste: 0
Segundo teste: 0
Terceiro teste: 0
stderr
sh: pause: not found