Ok, also habe ich hier einen Auftrag von meinem Professor. Hier ist es:Wie schreibe ich dein eigenes strchr in c mit Zeigern?
Schreiben Sie eine Funktion namens strchr406. Es ist 2 Parameter übergeben: eine Zeichenfolge und ein Zeichen Hier ist der Prototyp für die Funktion: char * strchr406 (char str [], char ch); Die Funktion sollte einen Zeiger auf die erste Instanz von ch in str zurückgeben. Zum Beispiel:
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
Er bittet uns, unsere eigene Version von strchr mit Zeigern zu schreiben. Ich habe online nach Ressourcen gesucht, aber nichts davon entspricht dem, was er von uns verlangt. Ich arbeite mit einer Gruppe anderer Studenten zusammen, und keiner von uns konnte das herausfinden.
Wie geben wir "s + 1" zurück?
Bisher habe ich dies: (ich es auch online gestellt, wenn das einfacher ist: https://repl.it/FVK8)
#include <stdio.h>
#include "string_problems.h"
int main() {
char s[ ] = "abcbc";
strchr406(s, 'b'); // returns s + 1 (i.e., a pointer to the first 'b' in s)
strchr406(s, 'c'); // returns s + 2
strchr406(s, 'd'); // returns 0
printf("this should return %s\n", strchr406(s, 'c'));
return 0;
}
char *strchr406(char str[], char ch) {
char *p = str;
int index = 0;
while (*str != ch) {
++str;
++index;
}
if (*str == ch) {
return p + index;
} else {
return 0;
}
}
Ich erhalte seltsame Ausgänge. Jede Hilfe wird geschätzt.
Nicht klar, was Ihr Problem ist. 'strchr' ist eine ziemlich einfache Funktion. Sie können jedoch keinen Zeiger oder eine ganze Zahl von Ihrer Funktion zurückgeben, diese Zuordnung ist Unsinn wie angegeben (und zu lehren, "0" als Nullzeigerkonstante zu verwenden, ist ein schlechter Stil; verwenden Sie das Makro 'NULL'). Vielleicht bedeutet Ihr Prof ein _null Zeiger_, der nicht der Integer "0" ist? Aber dann können Sie nicht wie eine Zeichenfolge drucken, sondern explizit testen und etwas anderes drucken (das ist die Idee von Null-Zeigern). – Olaf
Und posten Sie keine Bilder von Text. Sie sollten es zumindest als Text einfügen. – Olaf
Ich werde es jetzt bearbeiten. – nastypluto