Ich schrieb ein Programm zum Aufteilen einer Eingabezeichenfolge mit ';' als Terminator und drucke den Teil der Zeichenkette, der nach ';' Das Programm zeigt die korrekte Ausgabe an, wenn die Teilzeichenfolge ";" in der Eingabezeichenfolge ist kein gültiger Terminalbefehl, sondern gibt auch command not found
aus. Auf der anderen Seite wird nichts gedruckt, wenn die Teilzeichenfolge von ';' ist ein gültiger Terminalbefehl und führt die Teilzeichenfolge als einen Befehl aus, z. Falls "sjhjh; ls" eingegeben wird, wird der Befehl ls ausgeführt.Das ';' Zeichen in der Eingabe wird fehlinterpretiert
Wie kann ich den command not found
Teil loswerden? Hier ist der Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char * input;
char * str;
char * word;
char terminator = ';';
if (argc < 2) {
fprintf(stderr,"ERROR, no string provided\n");
exit(1);
}
input = argv[1];
word = strchr(input, terminator);
if (word != NULL) printf("%s\n", word);
return 0;
}
Jungs, nicht diese Frage ablehnen. Es ist tatsächlich ein ziemlich seltenes und interessantes Beispiel für das Zusammenspiel zwischen der Shell und einer Anwendung. – DyZ
schlagen vor, den Namen der Shell als Tag hinzuzufügen –
@DYZ Ich werde nicht downvote, aber es ist tatsächlich ein Beispiel für die Verwendung des Debuggers oder die Erstellung eines MCVE. Sonst wäre es klar, dass der Text niemals den 'argv' in main erreicht und die Frage könnte einen ganz anderen Fokus haben. – grek40