【发布时间】: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 page 或 strcmp, wcscmp, _mbscmp | Microsoft Docs - 您的选择。
标签: c file dynamic-programming dynamic-arrays