Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- void ausgabe(char *satz, char suchbuchstabe)
- {
- int start=(int)satz&0xFFFFF0; //mit Adressen keine rechenfunktion
- int ende;
- char *p;
- int i;
- int j;
- int berechnen;
- int anzahl;
- int bytegroesse=(int)satz;
- int gefunden=0;
- char *laenge;
- char *zeichenkette;
- printf("Startadresse von dem String :%x \n \n", satz);
- printf("Startadresse: %x \n", start); //Veränderte Startadresse
- laenge = (char *) malloc((strlen(satz)+1)*sizeof(char)); // Speicher anfordern
- strcpy(laenge, satz);
- if (laenge != NULL) {
- printf("Reservierter Speicher %i \n", strlen(laenge)); // Reservierte Größe ausgeben
- }
- else if(laenge =NULL){
- perror("Nicht reserviert.");
- }
- while (1)
- {
- if(*satz==0)
- {
- break;
- }
- satz++;
- }
- bytegroesse=(int)satz-bytegroesse;
- printf("Die Länge der Zeichenkette: %i \n", bytegroesse);// wegen der 0 am Ende de Zeichenkette
- ende=(int)satz|0xF; //(int) ist ein caster, damit aus einem Char ein Integer wird. | = Oder 0xFFFFFFF kann man als 0xF darstellen
- ende = ende+1;
- printf("Endadresse: %x \n \n", ende);
- printf("ADDR 0123456789ABCDEF \n");
- berechnen = ende - start; // berechnen, wieviele Zeichen in eine Reihe können. /15
- anzahl = (berechnen) / 15; // anzahl der Reihen angeben = 15 +1 wegen der 0 am Ende der Zeichenkette. / 15 = Anzahl der Reihen
- for(j = 0; j<anzahl; j++) // Reihen durchlaufen.
- {
- printf("%x ", start);
- for(i=0;i<=15;i++)
- {
- p=(char *)start;
- if(suchbuchstabe ==*p )
- {
- gefunden++;
- }
- printf("%c", *p);
- start++;
- }
- printf("\n");
- }
- printf("\n \nAnzahl der gefundenen Zeichen: %i \n \n", gefunden);
- }
- int main (char argc, char **argv)
- {
- char a[]="Das ist eine Zeichenkette!"; //argv in der aufgabe 3 - wird hier in der Main gemacht.
- //char suchbuchstabe='a';
- ausgabe(a, 'e'); // Sind in argc drei Argumente? wenn nein, Fehler.
- /*malloc
- Speicherplatz reservieren mit malloc und über strcpy den Inhalt von dem Array in den *Pointer kopieren
- auf stringlänge beziehen
- char *b=a; //zeiger von b
- int i;
- int zahl=0;
- //char [0] =H
- printf("%x \n", a);
- printf("%x \n", b);
- printf("\n\n\n");
- for( i=0; i<sizeof(a);i++)
- {
- printf("%x ", b);
- printf("%c \n", *b);
- if(*b=='l')
- {
- zahl++;
- }
- b++;
- }
- printf("Es wurden %i L gefunden" , zahl);
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement