Bestimmen, ob Zeichenfolge aus argv [1] beginnt mit einem Zeichen oder eine Zahl (C-Programmierung)

StackOverflow https://stackoverflow.com/questions/1693636

  •  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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top