Sscanf проблема и чтение из командной строки - PullRequest
0 голосов
/ 08 декабря 2010

Привет, ха-ха, еще раз. C- Unix Я читаю что-то вроде этого:

a.out [23 + 10i]

sscanf(argv[count], "[%d%c%di]", &a, &operand1, &b);

Я хочу отделить следующим образом: а = 23 б = 10 операнд = '+' но я получаю ошибку segfault (core dumped), что я делаю не так?

Кстати, большое спасибо за ответы на все мои глупые вопросы

1 Ответ

4 голосов
/ 08 декабря 2010

Это работает для меня

#include <stdio.h>
int main(int argc, char **argv) {
    int a, b;
    char operand1;
    int n;

    printf("scanning argv[argc - 1]: %s\n", argv[argc - 1]);
    /* It works for me */
    n = sscanf(argv[argc - 1], "[%d%c%di]", &a, &operand1, &b);

    printf("%d values read\n", n);
    if (n != 3) printf("there was an error in scanf ...\n");
    printf("The values were %d, %c, and %d\n", a, operand1, b);
    return 0;
}

И примерный прогон:

$ ./a.out [23+43i]
scanning argv[argc - 1]: [23+43i]
3 values read
The values were 23, +, and 43

Обратите внимание, что argv[argc] является нулевым указателем.

...