Zrobiłem program, który usunie znaki wewnątrz nawiasów. Wprowadzony tekst powinien mieć zgodny nawias otwierający i zamykający.Usuwanie znaków z nawiasów w C
Przypadek 1:
Wejście: (Hello) World
wyjściowa: World
Przypadek 2:
Wejście: (Hello World
wyjściowa: (Hello World
Przypadek 3:
Wejście: Hello)(World
wyjściowa: Hello)(World
Przypadek 4:
Wejście: Hello((hi) World)
wyjściowa: Hello
Przypadek 5:
Wejście: (Hello) hi (World)
wyjściowa: hi
Oto mój kod:
#include <stdio.h>
int main(){
char string[100] = {0};
char removedletters[100] = {0};
fgets(string, 100, stdin);
char *p;
int x = 0;
int b = 0;
for (p=string; *p!=0; p++) {
if (*(p-1) == '(' && x) {
x = 0;
}
if (*p == ')') {
x = 1;
}
if (!x){
removedletters[b] = *p;
b++;
}
}
puts(removedletters);
}
Przypadek 1, 3 i 5 są poprawne, ale nie w przypadku 2 i 4. Co źle z moim kodem?
użycie strchr zamiast szukać ręcznie poprzez ciąg – thumbmunkeys
'if (* (p-1)' jest niezdefiniowane zachowanie dla pierwszej iteracji. – Mat
+1 Witamy stackoverflow! Wspaniałe pierwsze pytanie. – phihag