Ich tauche in C in Zeiger und Strings ein und ich gewöhne mich immer noch an einige Konzepte. Ich habe versucht, eine Version der strchr()
Funktion - die gleiche wie in string.h - zu Studienzwecken zu implementieren, aber etwas Grundlegendes ist immer noch nicht richtig.Könnte jemand mir helfen, diesen strchr() C Segmentierungsfehler zu verstehen?
Hier ist mein Code:
#include <stdio.h>
char* my_strchr(const char* str, int c){
if (str == NULL){
printf("STR is NULL. Finishing the program\n");
return NULL;
}
while (*str != '\0'){
if (*str == c){
return (char*) str;
}
str++;
}
return NULL;
}
int main(){
char *a = "Hello World!";
char *b;
char c;
printf("Type the character you want to find in the Hello World! string:\n");
scanf(" %c", &c);
b = my_strchr(a, c);
printf("Character found! %c\n", *b);
return 0;
}
Ich versuche, herauszufinden, warum dies ist eine Segmentierung Fehler zurückgegeben. Wenn ich gbd verwende, sagt es mir, dass der Fehler in der letzten printf
ist, die versucht, die *b
zu drucken.
Sobald my_strchr()
einen (char*) str
zurückgibt, müsste ich diesen Rückgabewert in einer char
Zeigervariable speichern, richtig?
Erfolgt dies bei allen Eingaben oder nur bei Zeichen, die nicht in Ihrer Testzeichenfolge enthalten sind? – usr2564301
@Rad Lexus mit allen Eingabe ... Immer noch versuchen, herauszufinden, was passiert ... – ulissesBR
Zeigen Sie Ihre Eingabe. Auch 'strchr' kann' '\ 0'' suchen. – BLUEPIXY