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就可以了
大约 2 年之前 回复
lm_whales
lm_whales 把两个main 改名为 IP 和 PassWord 至于如何改,需要按照逻辑处理,简单处理的话,if else 那里 分别返回 1 和0 即可
大约 2 年之前 回复
qq_34556554
qq_34556554 啊?怎么改啊,怎么您的那么简单
大约 2 年之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
求数据结构大神帮我看看程序!!谢谢!!!
写了一个图的深度遍历  但是没有按照想象中出现结果  通过调试 发现没有进入递归函数DFS 求大神指教啊 万分感谢 #include using namespace std; typedef struct arcNode{ int adj; double weight; struct arcNode *next; }ArcNode; typedef
帮我看看一个小程序,谢谢
-
MFC中如何将两个独立的程序合并为一个程序(障眼法)
今天一个同学叫我帮忙解决一个关于MFC的问题,问题为:“将两个独立的MFC程序合并为一个程序 ”。
如何将多个C语言模块组合成一个程序
一般来说,我们编制的C语言源程序都是放在一个扩展名为.C的文件中,这对一个较简单的程序是合适的,但对于大型项目就不合适了,其一,大项目往往由多人合作完成,大家都来 操作同一个文件极易出错;其二,大文件的编译、调试都极为复杂;其三,如果两个程序中都要用到同一个自定义的函数,此函数须从一文件移动到另一文件中,这种移动容易出错。为了解决这一矛盾,一个大的程序往往被分成几个部分,存放在不同的DOS文件各。
C语言课程设计----编写一个通用的两数相加的程序
C语言课程设计----编写一个通用的两数相加的程序
用c语言编写两矩阵相乘程序
用c语言编写两矩阵相乘的程序,有详细的过程解释,同时该程序支持两文件导入而不是输入矩阵数字
Java一个简单的死锁程序
package namespace; class Dead implements Runnable { public boolean flag; public Object locka=new Object(); public Object lockb=new Object(); public Dead(boolean f) {this.flag=f;} public vo
EXE合并器-用于合并两个EXE文件
EXE合并器-用于合并两个EXE文件 方便两个程序一起启动!
自己写了一个简单的画图程序
没事儿了,正好上学期学了MFC,编写了一个简单的画图程序,大家可以下载看看
实现程序合并和分解
实现程序合并和分解的两种方法1.资源 2.尾追加