c - 文件和生成数字,c 编程

标签 c

下一个任务是: 生成 20 个随机数并从文件 tombula.txt 中读取包含用户姓名及其 9 个数字的信息后,打印第一个用户(他/她的名字),该用户的数组中的 3 个数字等于生成的数字。

这是我的代码部分,我生成数字并从文件中读取,但我不知道如何找到第一个从数组中包含 3 个数字等于生成数字的人,如果您知道如何编写,请帮忙:

#define _CRT_SECURE_NO_WARNINGS

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

    typedef struct
    {   char name[50];
        int num[8];
    }someone;

void generating(int[]);
int check(int[], int);


int main(void)
{
    someone *pK = NULL;
    int i, j, count = 0, tip;
    FILE *F;
    int generated[30];
    int brojac[5];

    srand(time(NULL));
    generating(generated);

    for (int j = 0; j < 20; j++)
        printf("%d ", generated[j]);
    printf("\n\n\n");
    F = fopen("tombula.txt", "r");
    if (F == NULL)
    {
        printf("error!");
        exit(1);
    }

    i = 0;
    while (feof(F) == 0)
    {
        pK = ((someone *)realloc(pK, (i + 1)*sizeof(someone)));

        fscanf(F, "%s", pK[i].name);
        for (j = 0; j < 8; j++)
            fscanf(F, "%d", &pK[i].num[j]);

        i++;
        count++;
    }
    i--;
    count--;

    for (int z = 0; z < count; z++){
        printf("%s ", pK[z].name);
        for (int k = 0; k < 8; k++){
            printf("%d ", pK[z].num[k]);
        }
        printf("\n");
    }







    return 0;
}


void generating(int numbers[])
{
    int i, tmp;

    for (i = 0; i < 20; ++i)
    {
        tmp = rand() % 50 + 1;
        if (check(numbers, tmp))
        {
            --i;
            continue;
        }
        numbers[i] = tmp;
    }
}

int check(int b[], int a){
    int i;
    int n = 8;

    for (i = 0; i < 20; ++i)
    {
        if (b[i] == a)
            return 1;
    }
    return 0;
}

最佳答案

1.您以r模式打开文件。

2.在循环中(循环必须工作到 EOF)使用 fscanf() 读取文件中存储的数据。将 name 存储到 char 数组number整数数组(如您在结构中定义的那样)。

3.内部循环检查3个数字是否与生成的数字匹配,以及是否打印人员姓名 并使用 break 退出循环。

4.在此之后关闭文件。

关于c - 文件和生成数字,c 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31407271/

相关文章:

iphone - 尝试将 NSUInteger 与枚举一起使用 (<<)

c - malloc 在循环中崩溃,但在循环外正常

c - 如何使用 malloc.h header 为结构指针分配内存?

c - 通过 C 中的中心函数管理管道

c++ - gcc -lpthread 不工作

c - 将数据写入二进制文件,然后读回

c - pthread_mutex_t 位于结构体内部并在访问时锁定该结构体

java - C++ 和 Java 中 CRC32 的不同结果

c - 使用 strtok_r 拆分可变数量的 token

打印出用户输入的最大值和最小值的 C 程序,涉及精度小数