从标准输入分段错误中获取输入

Taking input from stdin segmentation fault

我正在尝试 运行 的代码的预期输入看起来像这样:

(i,j) 其中 i 和 j 是整数。 (例如 (1,2)、(10,21) 等)。

我需要将这两个整数存储在 int 变量中。

这是我做的:

    getchar(); // gets open parenthesis

    // gets first num
    char *first;
    int z = 0;
    int a;

    while((a = getchar()) != ',') {
        first[z] = a;
        z++;
    }
    int firstNum;
    sscanf(first, "%d", &firstNum);
    printf("%d\n", firstNum); //checking if got correct num

    // gets second num
    char *second;
    int y = 0;
    int b;
    while((b = getchar()) != ')') {
        second[y] = b;
        y++;
    }
    int secondNum;
    sscanf(second, "%d", &secondNum);
    printf("%d\n", secondNum); //checking if got correct num

获取第一个数字有效。但是,当我为第二个数字做这件事时,出现了分段错误,我不知道为什么?我基本上只是重做了获取第一个数字的过程?

谢谢!

first 和 second 应该是数组而不是指针。 您的两个指针都指向内存中的某个位置,并且在访问它们时 "as arrays" 您覆盖了不同的内存。

变化:

char *first;
char *second;

成为:

char first[128] ={0};
char second[128] ={0};

另外,请阅读以下内容: http://www.geeksforgeeks.org/difference-pointer-array-c/ 它以非常清晰的方式解释了数组和指针之间的区别。