c-如何从stdin读取数字直到结束



如果有for(;;),我需要从stdin读取一些内容并保存到Nread(stdin,N,sizeof(float))while(s!=EOF)可能是s=getc(stdin)我假设一个数字列表保存在stdin分隔的行末尾

问题是:

您的程序必须将其pid打印为标准输出。然后,它应该开始从标准输入读取N的值,直到文件结束。在接收到信号(SIGUSR1)后,您的程序应该从sum(sum=0的第一个值)中减去(然后乘,然后除,然后减)N的值作为一个循环。收到SIGUSR2后,您的程序应该打印当前的总和。

我如何理解这个问题并尝试:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
float N,sum=0;
int count=0;
void handler(int s){
    count++;
    if (s==SIGUSR1){
        if (count==1){
            sum-=N;
        }   
        if (count==2){
            sum*=N;
        }
        if (count==3){
            sum/=N;
        }
        if (count==4){
            sum+=N;
            count==0;
        }
    }
    else if (s==SIGUSR2){
        printf("sum=%d",sum);
    }
}

int main(){
    pid_t pid=getpid();
    signal(SIGUSR1,handler);
    signal(SIGUSR2,handler);
    printf("%d",pid);
    fflush(stdout); 
    for(;;)
    scanf("%d",&N);

    return(0);
}

检查scanf的返回值。它返回成功匹配的项目数,所以如果不返回1,那么就完成了。

while (scanf("%d", &N) == 1)
    ;

最新更新