T
thefy
Gast
Hallo Leute,
ich versuche mich gerade an einer kleinen C Aufgabe habe aber ein Problem mit den Pointern.
Ich will das alles mit Pointern lösen also ohne Arrays (außer argv).
Das Programm soll direkt von der Kommandozeile lesen.
z.B. tippt man ein: ./Programm Hallo Test und es soll folgendes ausgeben:
ollah
Hallo
Hall
Hal
Ha
H
tseT
Test
Tes
Te
T
Es soll das Wort also erst umdrehen und dann immer einen Buchstaben entfernen. Der zweite Teil in dem immer ein Buchstabe
entfernt werden soll funktioniert. Der obere in dem der String umgedreht wird funktioniert allerdings nicht.
Ich möchte die Werte aus der Umkehr Funktion mit Hilfe von Pointern in den Output Speicher ablegen und dann aus der Main Funktion ausgeben. Die Werte aus der "Dreieck Funktion" können direkt geprintet werden (das funktioniert ja auch).
Eigentlich verstehe ich die Funktionsweise von Pointern, aber ich denke dass in der Umkehr Funktion irgendwas nicht stimmt.
Ich würde mich freuen wenn jemand kurz drüber sehen könnte. Bitte keine kompletten Codes, da ich den Sinn dahinter verstehen möchte. Falls ich irgendwo einen Denkfehler bezüglich der Pointer habe würde ich mich über eine kurze allgemeine Erklärung freuen.
In der Umkehr Funktion habe ich im Moment noch " output[c] = *(input+b); " stehen. Ich möchte es aber eigentlich ohne einen Array zugriff lösen. Wenn ich aber output+c schreibe gibt der compiler eine Fehlermeldung aus.
Vom Aufbau möchte ich das Programm nicht ändern. Die Funktionen sollen also so bleiben.
Laut Aufgabe soll noch die Pointer Variable char* input_string; verwendet werden. Ich kann doch aber direkt mit argv auf die Adresse zugreifen (so wie ich es gemacht habe). Oder brauche ich diese Variable für etwas anderes?
Vielen Dank schon mal!
Gruß
ich versuche mich gerade an einer kleinen C Aufgabe habe aber ein Problem mit den Pointern.
PHP:
#include <string.h>
#include <stdio.h>
void kopieren_und_umdrehen(char* output, char* input) {
int a;
int b;
int c;
a=strlen(input);
for (b=a; b>=0; b--) {
for (c=0; c<a; c++) {
output[c] = *(input+b);
break;
}
}
}
void dreieck_ausgabe(char* input) {
int a;
int b;
int c;
a = strlen(input);
for (b=a; b>=0; b--) {
for (c=0; c<b; c++) {
printf("%c", *(input+c));
}
printf("\n");
}
}
int main(int argc, char** argv) {
// Kontrolliere, ob genug Argumente vorhanden sind
// wenn nicht, RETURN -1
char* input_string; //pointing zu den input strings
char output_buffer[1000]; //output speichern
// Gehe hier durch jeden input string und verwende die zwei Funktionen
int i;
int d;
for (i=1; i<argc; i++) {
kopieren_und_umdrehen(output_buffer, argv[i]);
for (d=0; d<strlen(argv[i]); d++) {
printf("%c", output_buffer[d]);
}
printf("\n");
dreieck_ausgabe(argv[i]);
}
return 0;
}
Ich will das alles mit Pointern lösen also ohne Arrays (außer argv).
Das Programm soll direkt von der Kommandozeile lesen.
z.B. tippt man ein: ./Programm Hallo Test und es soll folgendes ausgeben:
ollah
Hallo
Hall
Hal
Ha
H
tseT
Test
Tes
Te
T
Es soll das Wort also erst umdrehen und dann immer einen Buchstaben entfernen. Der zweite Teil in dem immer ein Buchstabe
entfernt werden soll funktioniert. Der obere in dem der String umgedreht wird funktioniert allerdings nicht.
Ich möchte die Werte aus der Umkehr Funktion mit Hilfe von Pointern in den Output Speicher ablegen und dann aus der Main Funktion ausgeben. Die Werte aus der "Dreieck Funktion" können direkt geprintet werden (das funktioniert ja auch).
Eigentlich verstehe ich die Funktionsweise von Pointern, aber ich denke dass in der Umkehr Funktion irgendwas nicht stimmt.
Ich würde mich freuen wenn jemand kurz drüber sehen könnte. Bitte keine kompletten Codes, da ich den Sinn dahinter verstehen möchte. Falls ich irgendwo einen Denkfehler bezüglich der Pointer habe würde ich mich über eine kurze allgemeine Erklärung freuen.
In der Umkehr Funktion habe ich im Moment noch " output[c] = *(input+b); " stehen. Ich möchte es aber eigentlich ohne einen Array zugriff lösen. Wenn ich aber output+c schreibe gibt der compiler eine Fehlermeldung aus.
Vom Aufbau möchte ich das Programm nicht ändern. Die Funktionen sollen also so bleiben.
Laut Aufgabe soll noch die Pointer Variable char* input_string; verwendet werden. Ich kann doch aber direkt mit argv auf die Adresse zugreifen (so wie ich es gemacht habe). Oder brauche ich diese Variable für etwas anderes?
Vielen Dank schon mal!
Gruß