Ich habe versucht, eine Funktion zu schreiben, die jedes Zeichen in Zeichenfolge s1
löscht, die mit einem beliebigen Zeichen in der Zeichenfolge s2
übereinstimmt. Hier ist der Testcode für die Squeeze-Methode.Warum Segmentierungsfehler: 11 für meinen C-Code aufgetreten?
#include <stdio.h>
void squeeze(char s1[], char s2[]);
int main()
{
char s1[20] = "HelloWorld", s2[20] = "ol";
squeeze(s1, s2);
printf("%s\n", s1);
return 0;
}
void squeeze(char s1[], char s2[])
{
int i, j, k;
k = 0;
for (i = 0; s1[i] != '\0'; ++i) {
for (j = 0; s2[j] != '\0'; ++j) {
if (s1[i] != s2[j])
s1[k++] = s1[i];
}
}
s1[k] = '\0';
}
Wenn ich diesen Code ausführen, Terminal gibt immer Segmentation fault: 11
. Könnte mir bitte jemand irgendwelche Hinweise geben, warum das passiert?
bitte reparieren Ihre –
Einrücken Bitte versuchen Sie Debuggen Code! –
Stimmen Sie mit @kiner_shah überein - Sie müssen lernen, wie man einen Debugger benutzt. Das Problem hierbei ist, dass der Wert von "k" über das Ende des "s1" -Arrays hinausgeht. –