【问题标题】:How to search specific data in structure arrys using file in c如何使用c中的文件搜索结构数组中的特定数据
【发布时间】:2019-01-05 05:09:57
【问题描述】:
 fp= fopen("Quiz.txt", "r");
             fflush(stdin);
            printf("Enter Name To Search:");
            gets(srch);

            if(srch==std[i].name)
            {
                 printf("\n Student Name: %s", std[i].name);
                 printf("\n Roll Number :%d", std[i]. roll);
                 printf("\n First Quiz Marks :%d", std[i]. quiz1);
                 printf("\n Second Quiz Marks :%d", std[i]. quiz2);
                 printf("\n Third Quiz Marks :%d", std[i]. quiz3);
                 printf("\n Fourth  Quiz Marks :%d", std[i]. quiz4);
                 printf("\n Fifth Quiz Marks :%d", std[i]. quiz5);
            }
            else{
                printf("No Data Of %s", srch);
            }
            getchar();
            fclose(fp);

我没有得到与用户搜索相关的数据,假设如果用户搜索他们的名字,如果该名字在文件中可用,那么它返回用户名卷号和 5 个测验标记,如果没有,则返回没有可用的数据

【问题讨论】:

  • 首先,永远不要永远使用gets函数!它是a dangerous function,因此已从 C 标准中删除。使用例如fgets 代替(但要注意它与 gets 的区别)。其次,将仅输入流传递给fflush(如stdin)在C 规范中明确提到为未定义的行为
  • 至于(我认为是)你的问题,我建议你读一两本书,因为几乎任何书或教程(甚至是非常糟糕的)都应该告诉你如何比较字符串。
  • 无法将 C 中的字符串相等性与 if(srch==std[i].name) 进行比较。请参阅 strcmp(3) - Linux manual pagestrcmp, wcscmp, _mbscmp | Microsoft Docs - 您的选择。

标签: c file dynamic-programming dynamic-arrays


【解决方案1】:

对于字符串比较,您可以使用函数int strcmp(const char *s1, const char *s2);。当且仅当两个字符串相同时,strcmp 函数才返回 0。如果第一个字符串大于第二个字符串,则返回值为负数,否则返回正数。 (不要忘记包含标题#include <string.h>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2020-06-24
    • 2015-03-08
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多