2 qq 34556554 qq_34556554 于 2016.05.08 09:13 提问

有个c程序不懂,麻烦大神看看~~ 5C

#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);

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;

}
C:\Users\Administrator\Desktop\Cpp1.cpp(83) : fatal error C1004: unexpected end of file found
这是什么意思,有大神帮忙解决下吗

3个回答

caozhy
caozhy   Ds   Rxr 2016.05.08 09:23

代码错得太多了,这个程序有两个main函数,还各干各的。前一个函数代码不全,括号都不配对,后面程序printf大小写都不对,变成Printf,感觉你的代码是胡乱从word文档里粘贴的。

caozhy
caozhy 回复qq_34556554: 你要搞清楚程序在干什么,它们之间的关系是什么,添加和修改适当的代码,才好合并。
一年多之前 回复
qq_34556554
qq_34556554 回复caozhy:那要怎么才可以把这两个程序合成一个程序呢
一年多之前 回复
caozhy
caozhy 回复qq_34556554: 这不是word文档,两个程序就粘贴在一起就算一个程序了。你如果一瞧不通,还是找一个懂程序的人帮你吧。
一年多之前 回复
qq_34556554
qq_34556554 您好,我这两个代码单独执行都是可以的,但是合在一起的话需要怎么修改才可以执行呢
一年多之前 回复
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();
}

图片说明

CSDNXIAON
CSDNXIAON   2016.05.10 09:01

程序一直报错,不知道该如何改了,望各位大神帮我看看
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

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