尝试运行的代码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
它可以获得第一个数字。但是,当我为第二个数字做的时候,我遇到了分段错误,我无法弄清楚为什么?我基本上只是重新获得第一个数字的过程?
谢谢!
答案 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/ 它以非常清晰的方式解释了数组和指针之间的区别。