1

假设我有一个带有数字的文件: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++;
4

2 回答 2

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在循环之前初始化为零以避免未定义的行为。

这是关于 ideone 的演示

于 2013-11-11T19:32:29.913 回答
0
int arr[100];
int n;
int temp;
do
{
    scanf("%d",&temp);
    if(temp != -1)
    {
        arr[n] = temp;
    }
   n++;
}while(temp != -1 && n < 100);
于 2013-11-11T19:34:13.200 回答