Integer parsen in C?

4 Antworten

Von Experte julihan41 bestätigt

Das Argument muss in einen Integer umgewandelt werden:

#include <stdio.h>
#include <stdlib.h>

int foo(int n)
{
  return n * (n+1) / 2;
}

int main(int argc, char* argv[])
{
  int sum = foo(atoi(argv[1]));
  printf("%d\n", sum);
  return 0;
}

Hierzu kann die Funktion atoi (ascii to int) verwendet werden:

The C library function int atoi(const char *str) converts the string argument str to an integer (type int).

Weitere Informationen findest du unter: https://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm

Es gibt in C noch weitere Möglichkeiten, z. B. die Funktion strtol().

Von Experte Roderic bestätigt

Da steht doch, was fehlt: du musst die Eingabe als int casten, da es anders (als char) aufgenommen wird. C ist sehr streng bei Typen 😅


verreisterNutzer  10.10.2021, 19:05

Das ist nicht gut, da ein int größer als ein char ist.

1

Entweder Du nimmst atoi oder strtol (falls Fehlerbehandlugn nötig), oder schreibst es dir gerade selbst runter (als Übung).

Nimm die Funktion atoi (ASCII to INT) aus der Standardbibliothek zur Konvertierung eines Strings in eine Ganzzahl.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
  int x = 2, y = atoi(argv[1]);
  printf("%d * %d = %d\n", x, y, x * y);
  return 0;
}

LG