标题:崩溃了,时间不多了,这个大题目我必须得上交呀,,,求帮忙
只看楼主
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
结帖率:86.21%
已结贴  问题点数:10 回复次数:3 
崩溃了,时间不多了,这个大题目我必须得上交呀,,,求帮忙
我把程序简化了下,留下一个最大的问题
还是刚才那个读取文档的内容
文档里的内容如下:
wu        xu             82790229       Yyan       meng           82790389       Nli        ming           82780564       Yli        ming           82780564       N
有点乱,每条记录总共四个字段,到大写的N或Y结束。

读取的代码如下
程序代码:
#include<stdio.h>
#include<stdlib.h>

typedef struct
{
    char firstName[10];
    char lastName[15];
    char telNum[15];
    char tag;
}Customer;

Customer customer;
FILE *fp1;

void loadCustomer();

int main( void )
{
    int choice;

    printf( "\n请选择服务选项!\n"
                "0--退出系统\n"
                "1--装载客户信息\n"
                 );
    scanf( "%d", &choice );
    
    while(1)
    {
        switch( choice )
        {
        case 0:
            printf( "\n成功退出系统!\n" );
            exit(1);

        case 1:
            loadCustomer();     //装载客户信息
            break;

        default:
             printf( "\n输入错误,请重新输入\n" );
            break;
        }

        printf( "\n请选择服务选项!\n"
                "0--退出系统\n"
                "1--装载客户信息\n"
                );
        scanf( "%d", &choice );
    }

    return 0;
}

void loadCustomer()    //装载文件内容
{
    Customer cus;

    fp1 = fopen( "customer.txt", "r" );

    if( !fp1 )
    {
        printf( "文件无法打开!" );
        exit(1);
    }

    while(1)
    {
        if( !fread( &cus, sizeof( Customer ), 1, fp1 ) )
            break;

        cus.telNum[9] = '\0';
        cus.firstName[10] = '\0';
        cus.lastName[15] = '\0';

        printf( "%s %s %s %c\n", cus.telNum, cus.firstName, cus.lastName );
    }

    printf( "\n客户资料装载成功\n" );

    fclose( fp1 );
}





读取总是失败。没办法了,超出个人能力之外了,往高手帮忙解决!不胜感激。。。
搜索更多相关主题的帖子: 最大的 时间 color 上交 
2012-12-12 14:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
使用限定宽度的fscanf()函数读入,前面三个是%s,最后一个是%c,每次一条记录。

授人以渔,不授人以鱼。
2012-12-12 15:00
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:5 
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Customer
{
    char firstName[10];
    char lastName[15];
    char telNum[15];
    char tag;
}Customer;
Customer customer;
FILE *fp1;
void loadCustomer();
int main( void )
{
    int choice;
    while(1)
    {
        printf( "\n请选择服务选项!\n"
                "0--退出系统\n"
                "1--装载客户信息\n");
        scanf( "%d", &choice );
        getchar();
        switch( choice )
        {
        case 0:
            printf( "\n成功退出系统!\n" );
            exit(1);
       
        case 1:
            loadCustomer();     //装载客户信息
            break;
       
        default:
            printf( "\n输入错误,请重新输入\n" );
            break;
        }
    }

    return 0;
}
void loadCustomer()    //装载文件内容
{
    Customer cus;

    fp1 = fopen( "customer.txt", "r" );

    if( !fp1 )
    {
        printf( "文件无法打开!" );
        exit(1);
    }

    while(1)
    {
/*        if( !fread( &cus, sizeof( Customer ), 1, fp1 ) )
            break;
   
        cus.telNum[9] = '\0';
        cus.firstName[14] = '\0';
        cus.lastName[14] = '\0';
*/
        if (fscanf(fp1, "%s%s%s %c", cus.telNum, cus.firstName, cus.lastName, &cus.tag) == EOF)    break;
        printf( "%-10s%-15s%-15s\n", cus.telNum, cus.firstName, cus.lastName );
    }
    printf( "\n客户资料装载成功\n" );

    fclose( fp1 );
}


[fly]存在即是合理[/fly]
2012-12-12 15:07
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
得分:0 
有个函数你可以试下
strtok_s();
2012-12-12 15:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-390881-1-1.html




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

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