c语言程序要求的问题

c语言初学者
编写一个程序 程序要求:输入数字 当按下ctrl+D的时候将数字反转
例子:

Enter numbers forwards:
10
50
20
40 
(CTRL+D)
Reversed:
40
20
50
10


Enter numbers forwards:
5
4
-3
-2
-1 
(CTRL+D)
Reversed:
-1
-2
-3
4
5

这是我已经写的输入数字的代码 想问下接下来该怎么做:

 #include <stdio.h>

   int i;
   int number[999];
   
   printf("Enter numbers forwards:");
   while(1) {
   for(i=0;i<999;i++) {
   scanf("%d",number[i]);

前面几个人都写错了,scanf()返回的是成功读入数据的个数,但是如果遇到输入流结尾或读取错误,返回的是EOF,一般EOF定义为-1,所以正确的写法应该是判断scanf()的返回值是否为1
在Windows系统的终端下,按ctrl+z再回车表示输入流结束
在Linux/Unix系统的终端下,按ctrl+d表示输入流结束

#include <stdio.h>

#define N 100

int main()
{
    int a[N], i = 0;
    printf("Enter numbers forwards:\n");
    while (i < N && scanf("%d", &a[i]) == 1) // 判断i<N防止数组越界,判断scanf()返回值确定读入数据成功,如果scanf()遇到输入流结尾或提取错误,返回的是EOF
        i++;
    printf("Reversed:\n");
    while (i > 0) // 逆序输出,i是已输入数据的个数
        printf("%d\n", a[--i]);
    return 0;
}

1.scanf()函数有返回值且为int型。

2.scanf()函数返回的值为:正确按指定格式输入变量的个数,也即能正确接收到值的变量个数。

例如:

scanf("%d%d", &a, &b);

如果a和b都被成功读入,那么scanf()的返回值就是2;

如果只有a被成功读入,返回值为1;

如果a和b都未被成功读入,返回值为0;

如果遇到错误或遇到end of file,返回值为EOF。EOF是一个预定义的常量,等于-1。#define EOF -1

解答如下,有问题请回复

img

#include <stdio.h>
int main()
{
    int i=0;
    int number[999];
    printf("Enter numbers forwards:\n");
    while(scanf("%d",&number[i]))
    {
        i++;
    }
    printf("Reversed:\n");
    while(i)
    {
        printf("%d\n",number[i-1]);
        i--;
    }
    return 1;
}

img