| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 333 人关注过本帖
标题:谁能帮我看看一点c语言的小问题
只看楼主 加入收藏
深爱小馒头
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
谁能帮我看看一点c语言的小问题
这个是要实现通讯录的注册功能  如果有重复注册就会显示此人已经注册
可是我的为什么每次运行  即使注册过了 还是能写到文件中  总是没办法走while判断的语句
是我哪里写的问题  求高人指点   我的qq希望能有c语言高手加我一下  不胜感激
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct USER
{
    char loginName[20];
    char loginPass[20];
    struct USER *pUserNext;
}User;

typedef struct Linker
{
    int  id;
    char name[20];
    char phone[20];
    char address[20];
}Linker;

User* creatList();
User* registerUser(User *pUserHead);
FILE *fileOpen(const char *fileName,const char *mode);
int main()
{
    User *p = creatList();
    if(NULL == registerUser(p))
    {
        printf("注册失败\n");
    }
    else
    {
        printf("注册成功\n");
    }
}


//注册
User* registerUser(User *pUserHead)
{
    FILE *pfw = fileOpen("user.txt","ab");
    User *jitou = pUserHead;
    User *regUser = (User*)malloc(sizeof(User));
    printf("请输入用户名:");
    scanf("%s",regUser->loginName);
    printf("\n");
    printf("请输入用户密码:");
    scanf("%s",regUser->loginPass);
    printf("\n");
    if(NULL == pUserHead)
    {
        regUser->pUserNext = NULL;
        fwrite(regUser,sizeof(User),1,pfw);
        fclose(pfw);
        return regUser;
    }
    while(pUserHead)
    {
        if(strcmp(regUser->loginName,pUserHead->loginName) == 0)
        {
            free(regUser);
            fclose(pfw);
            printf("该用户名已经注册\n");
        }
        pUserHead = pUserHead->pUserNext;
    }
    regUser->pUserNext = jitou;
    fwrite(regUser,sizeof(User),1,pfw);
    fclose(pfw);
    return regUser;
}

//创建
User* creatList()
{
    FILE *pfr = fopen("朱凯通讯录.txt","wb");
    User *tou = NULL,
         *wei,
         *temp;
    temp = (User*)malloc(sizeof(User));
    while(fread(temp,sizeof(User),1,pfr))
    {
        temp->pUserNext = NULL;
        if(NULL == tou)
        {
            tou = temp;
        }
        else
        {
            wei->pUserNext = temp;
        }
        wei = temp;
        temp = (User*)malloc(sizeof(User));
    }
        free(temp);
        fclose(pfr);
        return tou;
}

FILE *fileOpen(const char *fileName,const char *mode)
{
    FILE *pf = fopen(fileName,mode);
    if(NULL == pf)
    {
        pf = fopen(fileName,"wb");
        fclose(pf);
        pf = fopen(fileName,mode);
    }
    return pf;

}
搜索更多相关主题的帖子: 注册 c语言 不胜感激 address include 
2012-03-10 16:06
飘过的落叶
Rank: 2
等 级:论坛游民
帖 子:14
专家分:26
注 册:2010-6-8
收藏
得分:20 
楼主可以在注册时,输入用户名后就检测一下是否存在,若存在就返回重新输入!那样应该就可以了。
2012-03-10 16:22
快速回复:谁能帮我看看一点c语言的小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015776 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved