说我有一个带有数字的文件: 1 2 3 4 5 6 7 8 9 10 -1
我想读取该文件并存储该文件的所有值,在控制变量-1处停止。
因此,如果我将该数组打印到另一个文件,它看起来像: 1 2 3 4 5 6 7 8 9 10
这给了我所有的数字,但它包括-1。我怎样才能放弃-1?
int arr[100];
int n;
while (scanf("%d",&arr[n]) > 0)
n++;
答案 0 :(得分:0)
您无法添加> 0
条件:这会给您未定义的行为。为了忽略否定的,你可以在读取数字之后在循环内添加一个单独的检查,如下所示:
while (scanf("%d", &arr[n]) != EOF) {
if (arr[n] > 0) {
n++;
}
}
由于数组arr
具有固定大小,因此防止超支是一个好主意,如下所示:
while (n < 100 && scanf("%d", &arr[n]) != EOF) {
if (arr[n] > 0) {
n++;
}
}
如果在文件结束前达到100,则此循环将停止。请注意,您还需要在循环之前将n
初始化为零,以避免未定义的行为。
答案 1 :(得分:0)
int arr[100];
int n;
int temp;
do
{
scanf("%d",&temp);
if(temp != -1)
{
arr[n] = temp;
}
n++;
}while(temp != -1 && n < 100);