fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char checksum(char *Received) {
  5. char *star = Received;
  6. char *delim1 = "&";
  7. char *delim2 = "*";
  8. char result = 0;
  9.  
  10. while (1) {
  11. char *ptr = strtok(star, delim1);
  12. if (!ptr) {
  13. break;
  14. }
  15. star = strtok(NULL, delim2);
  16. if (!star) {
  17. break;
  18. }
  19. printf("ptr = %s star = %s\n", ptr, star);
  20. if (ptr == star) {
  21. break;
  22. }
  23.  
  24. for (char *p = ptr; *p; p++) {
  25. result ^= *p; // XOR them into the result
  26. }
  27. }
  28. return result;
  29. }
  30.  
  31. int main(void) {
  32. char str1[] = "foo &abcdef*bar&12345*xxx";
  33. char str2[] = "blah &wxyz*xxx&0987*qwerty&ppppp*x";
  34. char cs1 = checksum(str1);
  35. char cs2 = checksum(str2);
  36. printf("checksum 1 = %d checksum 2 = %d\n", cs1, cs2);
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
ptr = foo  star = abcdef
ptr = blah  star = wxyz
checksum 1 = 70 checksum 2 = 39