Advertisement
Guest User

a3

a guest
Nov 27th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. void ausgabe(char *satz, char suchbuchstabe)
  5. {
  6. int start=(int)satz&0xFFFFF0; //mit Adressen keine rechenfunktion
  7. int ende;
  8. char *p;
  9. int i;
  10. int j;
  11. int berechnen;
  12. int anzahl;
  13. int bytegroesse=(int)satz;
  14. int gefunden=0;
  15. char *laenge;
  16. char *zeichenkette;
  17.  
  18. printf("Startadresse von dem String :%x \n \n", satz);
  19. printf("Startadresse: %x \n", start); //Veränderte Startadresse
  20. laenge = (char *) malloc((strlen(satz)+1)*sizeof(char)); // Speicher anfordern
  21. strcpy(laenge, satz);
  22. if (laenge != NULL) {
  23. printf("Reservierter Speicher %i \n", strlen(laenge)); // Reservierte Größe ausgeben
  24. }
  25. else if(laenge =NULL){
  26. perror("Nicht reserviert.");
  27. }
  28.  
  29.  
  30. while (1)
  31. {
  32. if(*satz==0)
  33. {
  34. break;
  35. }
  36. satz++;
  37.  
  38. }
  39. bytegroesse=(int)satz-bytegroesse;
  40. printf("Die Länge der Zeichenkette: %i \n", bytegroesse);// wegen der 0 am Ende de Zeichenkette
  41.  
  42. ende=(int)satz|0xF; //(int) ist ein caster, damit aus einem Char ein Integer wird. | = Oder 0xFFFFFFF kann man als 0xF darstellen
  43. ende = ende+1;
  44.  
  45. printf("Endadresse: %x \n \n", ende);
  46. printf("ADDR 0123456789ABCDEF \n");
  47.  
  48. berechnen = ende - start; // berechnen, wieviele Zeichen in eine Reihe können. /15
  49. anzahl = (berechnen) / 15; // anzahl der Reihen angeben = 15 +1 wegen der 0 am Ende der Zeichenkette. / 15 = Anzahl der Reihen
  50. for(j = 0; j<anzahl; j++) // Reihen durchlaufen.
  51. {
  52. printf("%x ", start);
  53. for(i=0;i<=15;i++)
  54. {
  55.  
  56. p=(char *)start;
  57.  
  58. if(suchbuchstabe ==*p )
  59. {
  60. gefunden++;
  61. }
  62.  
  63. printf("%c", *p);
  64. start++;
  65.  
  66.  
  67. }
  68.  
  69. printf("\n");
  70. }
  71. printf("\n \nAnzahl der gefundenen Zeichen: %i \n \n", gefunden);
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. }
  80.  
  81.  
  82. int main (char argc, char **argv)
  83. {
  84. char a[]="Das ist eine Zeichenkette!"; //argv in der aufgabe 3 - wird hier in der Main gemacht.
  85.  
  86. //char suchbuchstabe='a';
  87.  
  88.  
  89. ausgabe(a, 'e'); // Sind in argc drei Argumente? wenn nein, Fehler.
  90.  
  91. /*malloc
  92.  
  93. Speicherplatz reservieren mit malloc und über strcpy den Inhalt von dem Array in den *Pointer kopieren
  94. auf stringlänge beziehen
  95.  
  96. char *b=a; //zeiger von b
  97. int i;
  98. int zahl=0;
  99. //char [0] =H
  100. printf("%x \n", a);
  101.  
  102. printf("%x \n", b);
  103. printf("\n\n\n");
  104.  
  105. for( i=0; i<sizeof(a);i++)
  106. {
  107. printf("%x ", b);
  108. printf("%c \n", *b);
  109. if(*b=='l')
  110. {
  111. zahl++;
  112. }
  113. b++;
  114. }
  115. printf("Es wurden %i L gefunden" , zahl);
  116.  
  117. */
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement