Wie parse ich ein Integer in C? Sodass ich nur
./a.out 5
eingeben muss und dann die 5 "verarbeitet" werden kann?
Habe es so probiert:
#include <stdio.h>
int foo(int n)
{
return n*(n+1)/2;
}
int main(int argc, char* argv[])
{
int sum = foo(argv[1]);
printf("%d\n", sum);
return 0;
}
jedoch funktioniert es nicht, beim gcc compiler kommt das:
warning: passing argument 1 makes integer from pointer without a cast [-Wint-conversion] int sum = foo(argv[1]);
note: expected ‘int’ but argument is of type ‘char *’ int foo(int n)
Es wird zwar kompiliert, aber bei jeder durchführung mit den selben Variablen kommt immer was anderes raus.
$ foo 10
-737864039
$ foo 10
-118866279
$ foo 10
79058585
Dann habe ich es ein bisschen umgeschrieben und die Variable mit scanf eingelesen und da hat es funkioniert, sonst aber nicht. Was muss ich denn ändern?