输入数字(int)没有换行符c

问题描述 投票:-2回答:4

如何在没有空格的情况下输入数字(int)?

只要输入不为零,我想停止scanf。我该怎么做?

#include <stdio.h>
int main()
int num;
{

 while(num!=0){
    printf("Enter the account activity: ");
    scanf("%d", &num);
    if(num==0){
        break;
    }   
 }
}
c
4个回答
1
投票

我冒昧地按摩你的代码一点点,并假设你想要一个总和......

#include <stdio.h>

int main(void) {
    int num, sum = 0;
    printf("Enter the account activity: ");
    fflush(stdout);
    for (;;) {
        if (scanf("%d", &num) != 1) break;
        if (num == 0) break;
        sum += num;
    }
    printf("Result is %d.\n", sum);
    return 0;
}

0
投票

而不是使用scanf使用其他东西,例如:

#include<stdio.h>
#define MAX 100

int main(void)
{
    int i,count=0;
    int num=0, block=0;
    int sign=1;
    int arr[MAX] = {[0 ... MAX-1]=-1};

    while((i=getchar())!=EOF)
    {
         if(block==0)         //FIRST THING TO BE ENTERED BY USER IS SIGN OF INTEGER
         {
             if(i=='-')
                 block=1;
             sign=-1;
             continue;
         }
         if((i>'0')&&(i<='9'))
         {
             arr[count++]= i -'0';
         }
         else 
             break;
    }

            i=0;
    printf("The number is: ");
    while(i<count)
    {
        num=arr[i++]+num*10;
    }
    printf("%d",sign*num);
    return 0;
}

亲爱的downvoter - 请至少给我一个downvote的理由


0
投票
/*Program that prints and stores(last integer value) and terminates on input value of 0 */
#include <stdio.h>
int main(){
int num=1; 
while(num!=0){
    printf("\nEnter the account activity: ");
    scanf(" %d", &num);
    if(num==0)
        break;   
 }
return 0;
}

-1
投票
int main(void)
{
    int num;
    int ch = 0; // used for reading and discarding garbage from stdin

    printf("Enter the account activity: ");
    do {
        if(scanf("%d", &num) == 1) // check if an in could be read successfull
            printf("%d\n", num);   // if so, print it.
        else {                     // otherwise
            // read characters from stdin until EOF is reached
            while ((ch = getchar()) != EOF)
                if (isdigit(ch)         // if the last character 
                    || ch == '+'        // was a valid character to
                    || ch == '-') {     // begin a new int,
                    ungetc(ch, stdin);  // put it back into the stream
                    break;              // and break the while
                }
        }
    } while (num && ch != EOF);
}
© www.soinside.com 2019 - 2024. All rights reserved.