c-C 语言 按行读txt,存储到数组并查询

问题描述

C 语言 按行读txt,存储到数组并查询

txt如下:
ZQ112101
刘诚明
ZQ112102
刘磊
ZQ112103
刘义峥
ZQ112104
朱冠虞
ZQ112105
朱志阳
ZQ112106
樊颖卿
ZQ112107
刘玮
ZQ112108
朱美青
ZQ112109
朱翔
ZQ112110
朱信
ZQ112111
朱永楼

array[1] 希望能够返回 ZQ112101

解决方案

下边提供的源码供参考,linux试验通过了,希望对你能有帮助。

//源码文件 student_manage.c

#include
#include
#include

#define MAX_NAME_LEN 64
#define MAX_ID_LEN 16
#define MAX_STUDENT_NR 100

typedef struct student
{
char ID[MAX_ID_LEN];
char name[MAX_NAME_LEN];
} student_t;

student_t g_student_array[MAX_STUDENT_NR];
int g_count = 0;

void read_data(char * filename)
{
FILE *pFile = NULL;
char *pstr = NULL;
int count = 0;
int i = 0;

pFile = fopen(filename, "r");
if (!pFile)
{
    perror("fopen");
    goto l_out;
}

do
{
    pstr = fgets(g_student_array[count].ID, MAX_ID_LEN, pFile);
    if (!pstr)
    {
        goto l_error;
    }
    pstr[strlen(pstr)-1] = '';

    pstr = fgets(g_student_array[count].name, MAX_NAME_LEN, pFile);
    if (!pstr)
    {
        goto l_error;
    }
    pstr[strlen(pstr)-1] = '';

    count++;

} while (count < MAX_STUDENT_NR);

l_error:

if (!feof(pFile))
{
    perror("fgets");
}

g_count = count;

fclose(pFile);

l_out:
return;

}

int find_student_by_id(char *id)
{
int i;
int rc = 0;

for (i = 0; i < g_count; i++)
{
    if (! strcmp(g_student_array[i].ID, id))
    {
        printf("id:%s name:%sn", g_student_array[i].ID, g_student_array[i].name);
        rc = 1;
        break;
    }
}

if (i == g_count)
{
    printf("don't find student with id %sn", id);
}

return rc;

}
void print_data()
{
int i;
printf("All Student Info:n");
for (i = 0; i < g_count; i++)
{
printf("id:%s name:%sn", g_student_array[i].ID, g_student_array[i].name);
}
}

int main(int argc, char **argv)
{
char * filename = "name.txt";
char * id = "Z0002";

printf("------------------------------------------------n");
printf("Stage1, read data from file %s ...n", filename);
read_data("name.txt");
printf("------------------------------------------------n");
printf("Stage2, print info ...n");
print_data();
printf("------------------------------------------------n");
printf("Stage3, find studnent with id(%s)n", id);
find_student_by_id(id);

}

//示例文件 name.txt
Z0001
张三
Z0002
李四
Z0003
王五

解决方案二:

用ifstream的getline函数,要完整代码请先采纳。

时间: 2024-11-10 00:28:38

c-C 语言 按行读txt,存储到数组并查询的相关文章

c语言-C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么?

问题描述 C语言用fdets读txt然后fputs写入html格式文件,浏览器打开乱码,用记事本看html源代码却显示正常,为什么? 解决方案 编码格式不统一,浏览器默认编码不一致. 解决方案二: 可能是UTF8格式的吧,那要转码的 解决方案三: 浏览器还涉及一个编码的问题,你的是不是写入编码为utf-8了?要添加meta制定charset为utf-8 <meta http-equiv="Content-Type" content="text/html; charset

c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢

问题描述 c语言程序读txt文本,有程序没有文本,如何根据程序写文本?谢谢 struct jd { int num,s; double p,q,S,e,f,U,zkj,dp,dq,du,de,df; } jd[M]; struct zhl { int numb; int p1,p2; double r,x; } zhl[M]; FILE *fp1,*fp2; /* 读取数据 / void data() { int h,number; fp1=fopen("input.txt",&quo

c语言-编程以行读取txt文件,每行中以tab为分隔符为元素,C+、C#、python均可

问题描述 编程以行读取txt文件,每行中以tab为分隔符为元素,C+.C#.python均可 aaa bbb ccc ddd111 2015-01-01 00:00:00 1.000000002 FFF222 2015-01-02 00:00:01 1.000000003 EEEtxt文件的形式大概是这样,第一行为表头,接着是根据时间顺序排列的记录.元素形式有整型.双精度型.字符串和时间.我希望能够逐行读取记录,并且能够对指定列的元素进行不同记录条(行)间的大小比较(整型的元素)操作并将结果记录

sql-C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限?

问题描述 C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限? 都是按行读取txt内容,(因为有两行数据和其他的不一样)用正则分析出来,赋给一个字符串数组, 将一个字符串数组的每个值一次写入数据库行的对应列.一行读取完成. 可是却显示,索引超出了数组界限,数组个数和行对应的 .将读取出来的数据显示在textBox中是正确的, 但是奇怪的是也确实是导入进去了,数据库中表格有了数据 最终结果似乎对的,除了第二行第一列没有数据.谢谢,刚入手,第一个程序!

java-【求助】怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容)

问题描述 [求助]怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容) 用Java, 读txt文件(根据Eclipse软件的下方的console改成的log.txt) -------------------------------------- 例: [2013-08-26 10:45:45,042] ERROR does not exist. [2013-08-26 14:43:09,145] ERROR Certification failed. [2013-0

MFC读txt数据时,数据出错

问题描述 MFC读txt数据时,数据出错 我用mfc写了一个程序用于读取数据进行一元线性回归计算,读进来的数据总会莫名其妙的出问题,比如数据是12.34,读进来就会变成12.33999999999999999或者12.340000000000001,求各路大神帮忙看看是什么回事 解决方案 你有考虑过精度问题吗? 解决方案二: 浮点数在计算机中无法精确存储,只是无限接近这个数而已比如你存储12.34也只是存储一个无限接近12.34的值(比如12.339999....)所以我们比较浮点数的时候会设置

c#读txt文件 分割拼接问题,

问题描述 c#读txt文件 分割拼接问题, caozhy老师,发了,帮我看看,我估计循环哪里逻辑不清,多谢了 或者您哪里有什么好的方法 还有一种情况是某行最后那一列被分成了两行, 多谢了 解决方案 你的文件发在什么地方了??? 解决方案二: c#读txt文件中文乱码问题C#中读取txt文件中的中文时出现乱码问题c# 操作txt文件 解决方案三: caozhy老师 这里http://pan.baidu.com/s/1slzfWCl

十种程序语言帮你读懂大数据的“秘密”

文章讲的是十种程序语言帮你读懂大数据的"秘密",随着大数据的热潮不断升温,几乎各个领域都有洪水倾泻般的信息涌来,面对用户成千上万的浏览记录.记录行为数据,如果就单纯的Excel来进行数据处理是远远不能满足的.但如果只用一些操作软件来分析,而不怎么如何用逻辑数据来分析的话,那也只是简单的数据处理. 替代性很高的工作,而无法深入规划策略的核心. 当然,基本功是最不可忽略的环节,想要成为数据科学家,对于这几个程序你应该要有一定的认识: R 若要列出所有程序语言,你能忘记其他的没关系,但最不能

c语言-C语言,怎么在txt文件里面读出数据,用scanf```

问题描述 C语言,怎么在txt文件里面读出数据,用scanf``` 比如说text0.txt里面有这些数据3 12867 1.0 2.0 1.0 5.0 4.0 5.05 15643 1.0 2.0 4.0 5.0 7.8 3.5 5.0 0.4 1.0 0.44 18674 1.0 0.4 0.4 0.4 0.4 3.6 1.0 3.60 我怎么读出第一行,然后让npoints等于3,id等于12867,把1.0 2.0 1.0 5.0 4.0 5.0放入x[ ] 老师说只要在complie的