Ich schreibe ein Programm, das den Kommentar eines Benutzers nimmt. Speziell eine, die außerhalb von /*
und */
und auch innerhalb eingegeben hat. Ich habe meine Schleife geschrieben, um die Char "/"
in meinem Array zu finden, und ich bin mir nicht sicher, wie man es und alles dazwischen entfernen kann, bis es wieder erscheint. Zum Beispiel, wenn meine Eingabe war "comment /* this is my comment */"
Ich muss die /*
*/
und Inhalt zwischen entfernen. Meine Ausgabe wäre also einfach "comment"
. Wenn es keine "/* and */"
gibt, wird nichts entfernt. Ich weiß, ich brauche eine Schleife, aber wie würde ich eine Schleife schreiben, die Zeichen im Array entfernt, bis die nächste "/"
erscheint und entfernt es auch? Mein Code ist wie folgt:C Zeiger arithmetisches Array Zeichen entfernen
#include <stdio.h>
#include <string.h>
void remove_comment(char *s1, char *s2){
for(; *s1 != '\0'; s1++){ //loops through array until null value
if(*s1 == '/'){ //if array has '/' stored
//clear array elements till next '/' and removes it as well
}
else{
return; //do nothing to array
}
strcpy(s2,s1); //copies new modified string to s2 for later use
}
int main(){
char s1[101]; //declares arrays up to 100 in length with room for null character
char s2[101];
printf("Enter a comment: "); //enter a comment
fgets(s1, 100, stdin); // saves comment to array
remove_comment(s1,s2); //calls function
printf("%s", s2); //prints my modified array
return 0;
}
Sie müssen nur die Start- und Endpositionen des Kommentars finden, dann String und verketten diese Positionen mit –
Es könnte ein Detail sein, aber Sie Ihre Eingabe mit scanf Lesung() wird alles ignorieren, die folgen erste Leerzeichen (siehe http: // stackoverflow.com/questions/1247989/how-do-Sie-erlauben-Räume-zu-eingegeben-using-scanf) – Christophe
@Christophe Danke, seit der Zeit der Veröffentlichung habe ich in 'fgets()' –