C语言怎么输出txt文件内相同姓名,不同学号的学生?

如题所述

第1个回答  2021-12-07
你好亲,#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
printf("输入学生的信息,分别是班级,姓名,学号:");
FILE * student = fopen( "student.txt","wb+");
if( student == NULL )
{
printf("文件打开失败!");
system("pause");
return 0;
}
char a[100] ;
gets(a);
fwrite( a,(strlen(a)+1)*sizeof(char),1,student);
char szbuffer[100];
fseek(student,0L,0);
fread( szbuffer,(strlen(a)+1)*sizeof(char),1,student);
printf("写入的student.txt文件的内容为:%s\n",szbuffer);
fclose(student);
system("pause");
return 0;
}
这个题目考察的是fread和fwrite ,本来文本不应该用这两个函数.但是既然用了,要注意的是中间的文件指针,用fread的时候,需要fseek回到起始点,否则会出现乱码,经本人探测证明是对的.
第2个回答  2021-12-07
#include<stdio.h>
#include<malloc.h>
typedef struct stuInfo
{
int id;//学号
char name[10];//姓名
int score;//成绩
struct stuInfo *next;
}STUINFO;
void printfStu(STUINFO *stuHead);//打印学生链表
void inputInfo(STUINFO *stuHead);//输入学生成绩信息
void orderByScore(STUINFO *stuHead);//按照成绩名次排列。
int main()
{
STUINFO *stuHead=(STUINFO *)malloc(sizeof(STUINFO));
stuHead->next=NULL;

inputInfo(stuHead);
printfStu(stuHead);
printf("按照名次排列,依次为:第一名、第二名、第三名。。。\n");
orderByScore(stuHead);
printfStu(stuHead);
}
void printfStu(STUINFO *stuHead)
{
printf(" 学号 姓名 成绩\n");
while(stuHead->next!=NULL)
{
printf("%d %s %d\n",stuHead->next->id,stuHead->next->name,stuHead->next->score);
stuHead=stuHead->next;
}
}
void inputInfo(STUINFO *stuHead)
{
int id;
STUINFO *stuTail=NULL;
STUINFO *stuNew=NULL;
while(1)
{
stuNew=(STUINFO *)malloc(sizeof(STUINFO));
printf("输入学生的学号、姓名、成绩(学号输入负数结束输入):");
sca
第3个回答  2021-12-07
声明一个结构体变量数组,结构体里包含姓名和学号,将所需要姓名和学号输到结构体里,然后用遍历的方法查找结构体里与输入相同的姓名,并将这个结构体变量所包含姓名和学号输出,即可满足你的要求。
第4个回答  2021-12-07
对于一般的.txt文件用 fscanf()函数可以读取,但对于:输入学号,可输出一系列关于他的信息应该考虑结构,这样读取方法不一样
第5个回答  2021-12-07
然后用比较呗 if(Xiaoming.studentNumber == 123 || Xiaoming.name == "xiaoming") printf("%d", xiaoming.others1); 字符串比较那儿会有点问题,你可以修改一下...
相似回答