2 qq 34556554 qq_34556554 于 2016.05.08 09:49 提问

有没有会编写c程序的大神,帮我看看两个单独的程序怎么合成一个程序,谢谢

#include
#include
struct e
{
char a[10];
char b[10];
}z;
int main()
{ int t=0;
char s[10],d[10];
FILE *p;
void as();
if ((p=fopen("m.txt","r+"))==NULL)
{
p=fopen("m.txt","w+");
t=1;
}
if(t==1)
{
printf("当前没有任何用户\n");
printf("请新建用户名: ");
scanf("%s",s);
printf("为用户设置密码: ");
scanf("%s",d);
strcpy(z.a,s);
strcpy(z.b,d);
fprintf(p,"%s %s",z.a,z.b);
fclose(p);
}
if(t==0)
{
printf("请输入用户名: ");

scanf("%s",s);
   fscanf(p,"%s %s",z.a,z.b);
   fclose(p);
   if (!strcmp(z.a,s))
{
    printf("请输入密码:");
 scanf("%s",d);getchar();
       if(!strcmp(z.b,d))
 {  char i;
          printf("是否要修改密码?(输入y修改,n退出!)");
          scanf("%c",&i);
          if(i=='y')
 {   
              printf("请输入修改密码:");
           scanf("%s",z.b);
              p=fopen("m.txt","w+");
              fprintf(p,"%s %s",z.a,z.b);
  fclose(p);

#include

#include

int main()

{

char str[31],temp[31]; //定义IP地址为32位的字符类型
int a,b,c,d; //定义IP地址的四个字节为a,b,c,d,并且均为整型的
Printf(“请输入IP地址”)
while(gets(str) != NULL)

{

if(scanf(str,"%d.%d.%d.%d",&a,&b,&c,&d)==4

&& a>=0 && a<=255

&& b>=0 && b<=255

&& c>=0 && c<=255

&& d>=0 && d<=255) //IP地址每个字节的范围限制
{

printf(temp,"%d.%d.%d.%d",a,b,c,d);

if(strcmp(temp,str)==0)

{

printf("IP地址合法\n");

}

else

{

printf("IP地址不合法\n");

}

}

else

{

printf("IP地址不合法\n");

}

}

return 0;

}
以上两个单独的程序都可以执行,但是怎么合成一个程序呢,麻烦大神们教教我

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.05.08 10:31
已采纳

1.将两个main函数里的代码分别封装到一个函数里
2.IP那个函数里的scanf和printf都应该改成sscanf和sprintf

 #include<stdio.h>
#include<string.h>
struct e
{
    char a[10];
    char b[10];
}z;
void fun1()
{ 
    int t=0;
    char s[10],d[10];
    FILE *p;
    void as();
    if ((p=fopen("m.txt","r+"))==NULL) 
    {
        p=fopen("m.txt","w+");
        t=1;
    }
    if(t==1)
    {
        printf("当前没有任何用户\n");
        printf("请新建用户名: ");
        scanf("%s",s);
        printf("为用户设置密码: ");
        scanf("%s",d);
        strcpy(z.a,s);
        strcpy(z.b,d);
        fprintf(p,"%s %s",z.a,z.b);
        fclose(p);
    }
    if(t==0)
    {
        printf("请输入用户名: ");
        scanf("%s",s);
        fscanf(p,"%s %s",z.a,z.b);
        fclose(p);
        if (!strcmp(z.a,s))
        {
            printf("请输入密码:");
            scanf("%s",d);getchar();
            if(!strcmp(z.b,d))
            {  
                char i;
                printf("是否要修改密码?(输入y修改,n退出!)");
                scanf("%c",&i);
                if(i=='y')
                {   
                    printf("请输入修改密码:");
                    scanf("%s",z.b);
                    p=fopen("m.txt","w+");
                    fprintf(p,"%s %s",z.a,z.b);
                    fclose(p);
                }
            }
        }
    }
}
void fun2()
{
    char str[31],temp[31]; //定义IP地址为32位的字符类型
    int a,b,c,d; //定义IP地址的四个字节为a,b,c,d,并且均为整型的
    printf("请输入IP地址");
    fflush(stdin);
    while(gets(str) != NULL)
    {
        if(sscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d)==4
            && a>=0 && a<=255
            && b>=0 && b<=255
            && c>=0 && c<=255
            && d>=0 && d<=255) //IP地址每个字节的范围限制
        {
            sprintf(temp,"%d.%d.%d.%d",a,b,c,d);
            if(strcmp(temp,str)==0)
            {
                printf("IP地址合法\n");
            }
            else
            {
                printf("IP地址不合法\n");
            }
        }
        else
        {
            printf("IP地址不合法\n");
        }
    }
} 

int main()
{
    fun1();
    fun2();
}

图片说明

CSDNXIAOD
CSDNXIAOD   2016.05.08 10:01

帮我看看一个小程序,谢谢
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

lm_whales
lm_whales   Rxr 2016.05.08 10:03

改下名字即可
例如一个叫 IP,一个叫PassWord

int main(){
IP();
PassWord();
return 0;

大概就是这样,其他 可以通过返回值处理。

lm_whales
lm_whales 如果IP错误就不执行 PassWord就可以了
一年多之前 回复
lm_whales
lm_whales 把两个main 改名为 IP 和 PassWord 至于如何改,需要按照逻辑处理,简单处理的话,if else 那里 分别返回 1 和0 即可
一年多之前 回复
qq_34556554
qq_34556554 啊?怎么改啊,怎么您的那么简单
一年多之前 回复
herozhangbz
herozhangbz   2016.05.08 11:03

你说这两个程序能独立运行?你在逗我吗?在给你纠正标点字母大小花括号、语句放在正确的位置后,编译出现50个错误。按着你的意思给你改了一个

    #include<stdio.h>
    #include<stdlib.h>
    struct e
    {
    char a[10];
    char b[10];
    }z;
    void as();
    int main()
    {
    char ck;
    int a,b,c,d; //定义IP地址的四个字节为a,b,c,d,并且均为整型的
    as();
    printf("请输入IP地址\n");
    while(1==1)
    {
        scanf("%d.%d.%d.%d",&a,&b,&c,&d);
        getchar();
        printf("你输入的IP为:%d.%d.%d.%d",a,b,c,d);
        if( a>=0 && a<=255&& b>=0 && b<=255&& c>=0 && c<=255&& d>=0 && d<=255) //IP地址每个字节的范围限制            
            printf("IP地址合法\n"); 
        else
            printf("IP地址不合法\n");
        printf("输入Y/N继续或结束\n");
        ck=getchar();
        if(ck=='N'||ck=='n')
            break;
    }

        getch();
        return 0;
    }
    void as()
    {
    int t=0;
    char s[10],d[10];
    FILE *p;
    if ((p=fopen("m.txt","r+"))==NULL) 
    {
    p=fopen("m.txt","w+");
    t=1;
    }
    if(t==1)
    {
    printf("当前没有任何用户\n");
    printf("请新建用户名: ");
    scanf("%s",s);
    printf("为用户设置密码: ");
    scanf("%s",d);
    strcpy(z.a,s);
    strcpy(z.b,d);
    fprintf(p,"%s %s",z.a,z.b);
    fclose(p);
    }
    if(t==0)
    {
    printf("请输入用户名: ");
    scanf("%s",s);
        fscanf(p,"%s %s",z.a,z.b);
        fclose(p);
        if (!strcmp(z.a,s))
    {
            printf("请输入密码:");
     scanf("%s",d);getchar();
                if(!strcmp(z.b,d))
     {  char i;
                        printf("是否要修改密码?(输入y修改,n退出!)");
                        scanf("%c",&i);
                        if(i=='y')
     {   
                                printf("请输入修改密码:");
                        scanf("%s",z.b);
                                p=fopen("m.txt","w+");
                                fprintf(p,"%s %s",z.a,z.b);
        fclose(p);
                }
            }
        }
    }
    }

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!