输入一串字符,输出字符为‘0’至‘9’的字符

我想要达到的结果:输入一串字符,将在‘0’至‘9’的字符输出,怎样使得第一个不为‘0’之前的‘0’不输出,而其后的‘0’正常输出

代码及运行结果如下:

img

代码:

#include <stdio.h>
int main()
{
    char buf[100];
    int i=0;
    int flag = 0;
    printf("input a string:");
    gets(buf); //
    while (buf[i] != '\0')
    {
        if(buf[i]>='0' && buf[i]<='9')
        {
            if(flag ==0 && buf[i]=='0')
            {
                flag = 1;
                printf("%c",buf[i]); //输出'0',如果不想输出第一个'0',就把这一句注释掉
            }else if(flag == 1)
                printf("%c",buf[i]); //正常输出
        }
        i++;
    }
    return 0;
}

设置一个flag状态变量初始为0。遇到‘1’至“9’将flag状态变量设置为1
遇到‘0'时再判断flag状态变量为1才输出0
你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char s[100];
    int n,i,flag=0;
    gets(s);
    n = strlen(s);
    for (i = 0; i < n; i++)
    {
        if ((s[i]>='1' && s[i]<='9') || (s[i]=='0' && flag==1))
        {
            printf("%c", s[i]);
            flag = 1;
        }
    }

    return 0;
}

如有帮助,望采纳!谢谢!