fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char **argv){
  4.  
  5. char buf[BUFSIZ];
  6. short a = 0;
  7. short b = 0;
  8. short anzc=0;
  9. short anzd=0;
  10. char (*c)[BUFSIZ]; /* das hier war falsch, jetzt ist es korrekt ein Zeiger d.h. also quasi eine Liste auf String mit max. BUFSIZ-1 Länge */
  11. short *d;
  12.  
  13. short i;
  14.  
  15.  
  16. while (fgets(buf, BUFSIZ, stdin) != NULL)
  17. {
  18. if (buf[strlen(buf)-1] == '\n') {
  19. char *isa = strstr(buf, "A:")==buf;
  20. char *isb = strstr(buf, "B:")==buf;
  21. char *isc = strstr(buf, "C:")==buf;
  22. char *isd = strstr(buf, "D:")==buf;
  23. if(isa){
  24. char *sep = buf+2;
  25. a = atoi(sep);
  26. d = malloc(a*sizeof(short));
  27. }else if(isb){
  28. char *sep = buf+2;
  29. b = atoi(sep);
  30. c = calloc(b,BUFSIZ); /* hier natürlich einen Speicherbereich definieren und anschließend als Stringliste gebrauchen! */
  31. }else if(isc){
  32. char *sep = buf+2;
  33. strcpy(c[anzc],sep); /* und hier natürlich keine einfache Zuweisung, sondern strcpy */
  34. anzc++;
  35. }else if(isd){
  36. char *sep = buf+2;
  37. d[anzd] = atoi(sep);
  38. anzd++;
  39. }
  40. }
  41. }
  42.  
  43. printf("%i\n", anzc);
  44. printf("%i\n", anzd);
  45.  
  46. for(i=0; i<anzc;i++){
  47. printf("%s",c[i]); /* hier dann natürlich Strings ausgeben mit %s und nicht Zeichen %c wie du */
  48. }
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0s 1968KB
stdin
A:2
B:3
C:ADWD
C:ADAFWF
C:WDAWD
D:200
D:100
stdout
3
2
ADWD
ADAFWF
WDAWD