Warum ist atoi, dass Sie mir einen segmentation fault?

Habe ich das folgende Stück code:

#include <stdio.h>

int main ( int argc, char *argv[] )
{
    int M, N;

    M = 1;
    N = 1;
    curr = 1;

    if ( argv[1][0] == '-' )
    {
        curr = 2;

        char *a = argv[1][1];
        char *b = argv[1][3];

        M = atoi(a);
        N = atoi(b);
    }

    printf("%d\n%d", M, N);
}

So, ich pass dieses Programm so etwas wie dieses:

a.out -1,2

und anstatt der erwarteten Produktion

1
2

Bekomme ich einen segmentation fault. Was gibt?

Was kaputt compiler verwenden Sie? char *a = argv[1][1]; sollte eine compiler - Fehler. C hat keine impliziten Konvertierungen von int zu Zeigertypen.

InformationsquelleAutor Waffles | 2010-11-05

Schreibe einen Kommentar