从stdin分段故障中获取输入

时间:2017-09-20 13:27:51

标签: c input segmentation-fault stdin

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

(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

它可以获得第一个数字。但是,当我为第二个数字做的时候,我遇到了分段错误,我无法弄清楚为什么?我基本上只是重新获得第一个数字的过程?

谢谢!

1 个答案:

答案 0 :(得分:4)

第一个和第二个应该是数组而不是指针。 你的两个指针指向内存中的某个位置,当“作为数组”访问它们时,你会覆盖不同的内存。

变化:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="input-box sd">
  <select name="options[1261]" id="select_1261" class=" required-entry product-custom-option" title="" onchange="opConfig.reloadPrice()">
    <option value="">-- Please Select --</option>
    <option value="6888" price="0">S </option>
    <option value="6889" price="0">M </option>
  </select>                                
</div>

成为:

char *first;
char *second;

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