C语音如何读取txt文件中的某一行并赋值给变量?

是这样的,我只学习过C语言,想用C语言做一个抽奖软件。现在我的想法是这样的:产生随机数,因为要链接文件(抽的是姓名),比如现在产生的随机数是5,而我就要将第五行的名字读取... 是这样的,我只学习过C语言,想用C语言做一个抽奖软件。
现在我的想法是这样的:产生随机数,因为要链接文件(抽的是姓名),比如现在产生的随机数是5,而我就要将第五行的名字读取并且赋值给新定义的变量。(每一行是一个姓名)。
我所遇到的困难:如何读取某一行的姓名并且赋值给变量。
展开
 我来答
寒曦的日常
推荐于2016-02-11 · TA获得超过350个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:211万
展开全部

最简单的方法,就是一行一行的读,但只取你要的那一行数据就行了。下面是我写的一个简单的例子,抽了三次奖,没有判重复的。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define PEOPLE_NUM 10 //我的文件里有10个名字

void get_prize(FILE* fp, char prize_name[])
{
    int num;
    int i;
    fseek(fp, 0, SEEK_SET);
    printf("start...\n");
    num = rand() % PEOPLE_NUM + 1;
    for(i = 0; i < num; ++i)
    {
        fgets(prize_name, 32, fp);
    }
    printf("%s get the prize!!!\n", prize_name);
}

int main()
{
    FILE* fp = fopen("name.txt", "r");
    int prize_num;
    int i;
    char prize_name[32] = {0};
    srand(time(0));

    for(i = 0; i < 3; i++)
    {
        printf("\n");
        get_prize(fp, prize_name);
    }
    
    fclose(fp);
    return 0;
}

文件是这个样子:

运行截图:

写这种程序你存名字的文件一定要排整齐,这样程序才好处理。祝好运。

更多追问追答
追问
已解决 谢谢。不过我有另一个思路,就是用fgets   先将数组置为空,然后每读取一行都置为空,直到找到应该得到的那一行,这样就不用fseek了,你的答案也很好 ,谢谢!
已解决 谢谢。不过我有另一个思路,就是用fgets   先将数组置为空,然后每读取一行都置为空,直到找到应该得到的那一行,这样就不用fseek了,你的答案也很好 ,谢谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式