Hatton_0 2014-12-27 09:54 采纳率: 0%
浏览 22380

Dc++ 中报错问题[Error] ld returned 1 exit status

直接上源码了, 求大神指点
#include
#include
#include

#define STU_INFO_FILE "d:\classmates_info_file.txt" //定义文本信息存储路径
#define FAILURE 0xFFFFFFFF
#define SUCCESS !0xFFFFFFFF
#define MAX_STU_COUNT 60
int size = 59; //设置全局变量size用来记录通讯录的个数,和数组的下标一致换句话说就是学生的个数减去1
int judge;
char name[MAX_STU_COUNT][10+1]; //存放姓名,每个班级50人,名字最长为10个字符;
char email[MAX_STU_COUNT][20+1]; //存放姓名,每个班级50人,名字最长为10个字符;
__int64 student_number[MAX_STU_COUNT]; //学号过长,即便unsigned int也不够存储,采用64位整型;
__int64 mobile_phone_number[MAX_STU_COUNT];
__int64 qq_number[MAX_STU_COUNT];

int AddStuInfoFromFile()
{
int tmpi;
char student_number_char[13 + 1];
char mobile_phone_number_char[11 + 1];

char qq_number_char[10 + 1];

FILE * pFile = NULL;

pFile = fopen(STU_INFO_FILE, "r");
if(!pFile)
{
    printf("AddStuInfoFromFile: File Open Failed!\n");
    return FAILURE;
}
else
    printf("AddStuInfoFromFile: File Open Succeeded!\n");

memset(student_number,0,8);  //memset(数组名,要初始化的值,大小)
memset(mobile_phone_number,0,8);
memset(qq_number,0,8);
memset(name,0,MAX_STU_COUNT * (10 + 1));
memset(email,0,MAX_STU_COUNT * (20 + 1));   

for(tmpi = 0; tmpi < MAX_STU_COUNT; tmpi++)
{
    fscanf(pFile,"%s",student_number_char);
    fscanf(pFile,"\t%s",name[tmpi]);
    fscanf(pFile,"\t%s",mobile_phone_number_char);
    fscanf(pFile,"\t%s",email[tmpi]);
    fscanf(pFile,"\t%s\n",qq_number_char);
    student_number[tmpi] = _atoi64(student_number_char);
    mobile_phone_number[tmpi] = _atoi64(mobile_phone_number_char);      
    qq_number[tmpi] = _atoi64(qq_number_char);
    if(student_number[tmpi]==student_number[tmpi-1]){
        tmpi = tmpi - 1;
        size = tmpi;
        break;}
//截止到此一共是tmpi位学生  编号从 0~tmpi-1 ; 若需要输出第n位学生则 则下表为 n-1

/*
printf("name %d is %s\n", tmpi, name[tmpi]);
printf("email %d is %s\n", tmpi, email[tmpi]);
printf("qq_number %d is %I64d\n",tmpi, qq_number[tmpi]);

*/
}
fclose(pFile);
return SUCCESS;
}

void outputAll()
{
int tmpi;
if(judge == FAILURE)
return;

for(tmpi = 0; tmpi <= size; tmpi++)
{

    printf("%I64d\t%s\t%I64d\t%s\t%I64d\n", student_number[tmpi], name[tmpi],
        mobile_phone_number[tmpi], email[tmpi],qq_number[tmpi]);
}

}

void output(int index);
int delete2(int n);
int insert(int index);
int find(__int64 mobile,__int64 QQ);

int main()
{
int n,n2,n3;
__int64 mobile=0,QQ=0;
if(judge = AddStuInfoFromFile()==FAILURE)
return FAILURE;
printf("请选择您所需操作:\n");
printf("1.查询\t2.插入\n3.删除\t4.输出通讯录\n");
char ch=getchar();
switch(ch){
case '1' :{
printf("请输入要查询学生的手机号码或者QQ号码,不选择项请填写数字0\n");
printf("手机号码:");
scanf("%I64d",&mobile);
printf("QQ号码:");
scanf("%I64d",&QQ);
find(mobile,QQ);}break;//查询
case '2' : {
if(size==59)//应该放在该函数之前
printf("超出了学生个数个数的范围\n");
else{

        printf("请输入要插入的位置:");
        scanf("%d",&n3);
        insert(n3);
        }}break;//插入 
    case '3' :{
        printf("请出入要删除学生的编号:");
        scanf("%d",&n2); 
        delete2(n2);
        }break;//删除 
    case '4' :{
        printf("请选择:\n1.输出第n位同学\n2.输出整个通讯录\n") ;
        char ch2 = getchar();//清楚一个缓存 
        ch2 = getchar();
        switch (ch2){
            case '1' :{
                printf("请输入要输出学生的编号:") ;
                scanf("%d",&n);
                output(n);};break;
            case '2' :outputAll();break;
            default  :printf("您输入的操作序号无法识别\n"); 
        } 
    }break;//输出通讯录 
    default  :printf("您输入的操作序号无法识别\n"); 
}

printf("请输入要输出学生的编号:") ;
scanf("%d",&n);
output(n);
return   SUCCESS;

}

void output(int index)
{
int tmpi;
if(judge == FAILURE)
return;
if(index-1>size)
printf("超出了学生个数的范围");
else if(index<1)
printf("输入的学生代号不正确\n");
else
printf("%I64d\t%s\t%I64d\t%s\t%I64d\n", student_number[index-1], name[index-1],
mobile_phone_number[index-1], email[index-1],qq_number[index-1]);

}

int find(__int64 mobile,__int64 QQ) //返回值为下标
{
int a1=-1,a2=-1;
int n;
if(mobile != 0){
if(mobile>=10000000000&&mobile<=99999999999){
for(n=0;n<=size;n++){
if(mobile_phone_number[n]== mobile){
a1=n;break; }
}
if(a1==-1){
printf("未找到对应的同学\n");
return FAILURE;}
}
else{
printf("输入的手机号码不正确\n");return FAILURE;}

}
//下面是 手机号为0
if(QQ!=0){
    if(QQ>0&&QQ<=9999999999){
        for(n=0;n<=size;n++){
        if(qq_number[n]==QQ){ 
        a2=n;break; } 
        if(a2==-1){
        printf("未找到对应的同学\n");return FAILURE;}} }
    else
    printf("输入的qq号码不正确\n");return FAILURE;} 
if(QQ==0&&mobile==0){
printf("您没有输入需要搜索的手机号或QQ\n");return FAILURE;}
if(a1==a2&&a1!=-1){
    output(a1+1); 
    return a1; 
} 

int insert(int index) //要求用户输入数据;
{

if(index>size+2){
printf("超出了可插入的范围\n");return FAILURE;} 
else if(index<1){ 
printf("输入的学生代号不正确\n");return FAILURE;} 
else{int size2=size; 
    for(; size2+1 >= index ;size2--){  // 要删除第4个  下 标是3      最大下标是 size=6  是三的呗死替代   n为5 下标为4 size为
    //6  用下标为5 的替代下标为 4 的  n变为6  下标  5   size=6  下标为6的代替下标为5的 size= 6 n为7 
    student_number[size2+1] = student_number[size2];
    mobile_phone_number[size2+1] =mobile_phone_number[size2];
    qq_number[size2+1] = qq_number[size2];
    strcpy(name[size2+1],name[size2]);
    strcpy(email[size2+1],email[size2]);}
    size++;
    char student_number_char[13 + 1];
    char mobile_phone_number_char[11 + 1];  
    char qq_number_char[10 + 1];
    char ch=getchar();
    printf("请输入该同学的姓名:");
    gets(name[index-1]);
    printf("请输入该同学的邮箱:");
    gets(email[index-1]);
    printf("请输入该同学的学号:");
    gets(student_number_char);
    printf("请输入该同学的手机号码:");
    gets(mobile_phone_number_char);
    printf("请输入该同学的QQ号码:");
    gets(qq_number_char);
    student_number[index-1] = _atoi64(student_number_char);
    mobile_phone_number[index-1] = _atoi64(mobile_phone_number_char);       
    qq_number[index-1] = _atoi64(qq_number_char);
    printf("已插入:(位置%d)\n",index);
    output(index);
    return index;
}

//用find查找信息

}

int delete2(int n)
{
if(n>size+1) {
printf("超出了学生个数个数的范围");
return FAILURE;}
else if(n<1){
printf("输入的学生代号不正确\n");
return FAILURE;}
else{
printf("已删除以下学生信息:\n");
output(n);

    for(;n<=size;n++){  // 要删除第4个  下 标是3      最大下标是 size=6  是三的呗死替代   n为5 下标为4 size为
    //6  用下标为5 的替代下标为 4 的  n变为6  下标  5   size=6  下标为6的代替下标为5的 size= 6 n为7 
    student_number[n-1] = student_number[n];
    mobile_phone_number[n-1] =mobile_phone_number[n];
    qq_number[n-1] = qq_number[n];
    strcpy(name[n-1],name[n]);
    strcpy(email[n-1],email[n]);}
    size--;}

}}

  • 写回答

5条回答

  • Hatton_0 2014-12-27 09:57
    关注

    图片说明

    再贴一张图

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样