| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1141 人关注过本帖
标题:看了帖子《如何读取一个文件把文件每行内容赋值给一个结构数组元素》,试验 ...
取消只看楼主 加入收藏
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
看了帖子《如何读取一个文件把文件每行内容赋值给一个结构数组元素》,试验中发现一些问题,请教一下
#include<stdio.h>
//#include<unistd.h>
struct emp{
        char name[20];
        long age;
        char phone[12];
};

int main(){
        int i;
        char str[50];
        FILE * fp = fopen("emp.txt", "r");
        struct emp a[3];
        i=0;
        while(fgets(str,50,fp)!=NULL){
                //for(i=0;i<3;i++){
                sscanf(str, "%[^|]|%ld|%s", a[i].name, &a[i].age, a[i].phone);
                //}
                i++;
        }
        return 0;
}






如果文件中的数据形式为  fred|30|18677442345|990|009
那么sscanf(str, "%[^|]|%ld|%s", a[i].name, &a[i].age, a[i].phone);这个语句里的 "%[^|]|%ld|%s" 该如何改写呢?
搜索更多相关主题的帖子: include return 如何 元素 
2015-12-12 22:19
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
收藏
得分:0 
另外,请问  %[^|]|%ld|%s   这些符号该如何理解
2015-12-12 22:22
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
收藏
得分:0 
用了"%[^|]|%d|%[^|]|%d|%s" ,但是不行。txt里的信息为10001|英语|2|20|2
我自己编写的读取这些信息到界面上的语句如下,请问哪里出错了,该如何修改
struct couse//课程信息结构体函数
{            char name1[30];
             int num1;            
         int credit;                                           // 学分                                                                           
             int maxP;                                          //上限人数
             int surplusP;                                     //剩余人数
             struct couse *next;                                
};                                                         


void Com()  //课程信息
{   int i=0;
    char str[50];
    struct couse p[600];
    FILE *ft=fopen("D:\\couse.txt","r");
    printf("课程编号\t课程名称\t学分\t课程上限人数\t\t剩余学位\n");
    while(fgets(str,50,ft)!=NULL)
    {
        sscanf(str,"%[^|]|%s|%[^|]|%d|%d",&p[i].num1,p[i].name1,&p[i].credit,&p[i].maxP,&p[i].surplusP);
        printf("%d\t%s\t%d\t%d\t%d",p[i].num1,p[i].name1,p[i].credit,p[i].maxP,p[i].surplusP);i++;
    }



2015-12-13 16:57
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
收藏
得分:0 
sscanf(str,"%[^|]|%s|%[^|]|%d|%d",&p[i].num1,p[i].name1,&p[i].credit,&p[i].maxP,&p[i].surplusP);
2015-12-13 16:58
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
收藏
得分:0 
初次接触C语言,查了一下正则表达式的用法,还是云里雾里的
2015-12-13 16:59
行者昊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-12-12
收藏
得分:0 
学到了,谢谢
2015-12-13 22:28
快速回复:看了帖子《如何读取一个文件把文件每行内容赋值给一个结构数组元素》, ...
数据加载中...
 
   



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

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