Bestimmen, ob Zeichenfolge aus argv [1] beginnt mit einem Zeichen oder eine Zahl (C-Programmierung)
-
18-09-2019 - |
Frage
Ich bin eine kleine Anwendung in C schreiben, die zwei Parameter übernehmen. Eine davon ist ein Dateiname, der andere eine Zahl, und sie können in beliebiger Reihenfolge angegeben werden.
./ Hauptdateiname 12345
und
./ Haupt 12345 Dateiname
sollten beide arbeiten.
Wie kann ich leicht feststellen, welche das ist, wenn ich die Dateinamen kennen beginnen mit einem Zeichen?
Lösung
Sie können die isalpha
und isdigit
Funktionen (in ctype.h
definiert) auf dem ersten Zeichen von argv[1]
oder argv[2]
.
Andere Tipps
Sie können die ctype Funktionen nutzen.
if (isalpha(*argv[1]))
// argv[1] starts with a letter
else if (isdigit(*argv[1])
// argv[1] starts with a number
Mit isdigit
.
isdigit((unsigned char)argv[1][0])
Vergewissern Sie sich, argc
zuerst.
if ('0' <= argv[1][0] && argv[1][0] <= '9')
{
/* it starts with a number */
}
Sie können auch die sscanf()
Funktion verwenden, die die Anzahl der erfolgreich gescannten Artikel zurückgibt:
int number;
char *string;
if (sscanf (argv[1], " %d ", &number) == 1) { /*12345 filename */
string = malloc ((strlen (argv[2]) + 1) * sizeof (char));
sscanf (argv[2], " %s ", string);
}
else { /* filename 12345 */
sscanf (argv[2], " %d ", &number);
string = malloc ((strlen (argv[1]) + 1) * sizeof (char));
sscanf (argv[1], " %s ", string);
}
Wenn argv[1]
ein String mit einem Zeichen wird wieder die erste Klausel „Null“ beginnen.