#include<stdio.h>
int main(){
FILE *data4;
int ch,lines=0,chars=0;
data4=fopen("data4.txt","r");
if(!data4)
{
printf("Open file failed(data4.txt)");
return 1;
}
while((ch=fgetc(data4))!=EOF){
switch(ch){
case' ':
case'\r':
case'\t':
break;
case'\n':
lines++;
break;
default:
chars++;
break;
}
}
lines++;
fclose(data4);
printf("data4.txt统计结果:\n行数:%d\n字符数(不计空白符):%d",lines,chars);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_STU 80
#define DRAW_NUM 5
typedef struct {
char id[20];
char name[20];
char cls[30];
} Student;
int main()
{
FILE *fpIn, *fpOut;
Student stu[MAX_STU];
int flag[MAX_STU] = {0};
int total = 0, i, j, randIdx, count = 0;
fpIn = fopen("list.txt", "r");
if(fpIn == NULL){
printf("打开名单文件失败!\n");
return 1;
}
while(fscanf(fpIn, "%s %s %s", stu[total].id, stu[total].name, stu[total].cls) != EOF){
total++;
}
fclose(fpIn);
srand((unsigned)time(NULL));
printf("----------------中奖名单----------------\n");
while(count < DRAW_NUM){
randIdx = rand() % total;
if(flag[randIdx] == 0){
flag[randIdx] = 1;
printf("%s %s %s\n", stu[randIdx].id, stu[randIdx].name, stu[randIdx].cls);
count++;
}
}
fpOut = fopen("20260615.txt", "w");
for(i = 0; i < total; i++){
if(flag[i] == 1){
fprintf(fpOut, "%s %s %s\n", stu[i].id, stu[i].name, stu[i].cls);
}
}
fclose(fpOut);
printf("-----------------------------------------\n");
printf("保存到文件\n");
printf("保存文件名:20260615.txt\n");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <windows.h>
#define MAX_STUDENT 80
#define WIN_COUNT 5
typedef struct {
long id;
char name[20];
char className[40];
} Student;
int main(void)
{
SetConsoleOutputCP(936);
Student stuArr[MAX_STUDENT];
int total = 0;
int selected[MAX_STUDENT] = {0};
Student winner[WIN_COUNT];
char saveFileName[50];
FILE *fpRead, *fpWrite;
fpRead = fopen("list.txt", "r");
if (fpRead == NULL)
{
printf("Error: Cannot open list.txt\n");
system("pause");
return 1;
}
while (total < MAX_STUDENT && fscanf(fpRead, "%ld %s ", &stuArr[total].id, stuArr[total].name) == 2)
{
fgets(stuArr[total].className, sizeof(stuArr[total].className), fpRead);
stuArr[total].className[strcspn(stuArr[total].className, "\n")] = '\0';
total++;
}
fclose(fpRead);
if(total < WIN_COUNT)
{
printf("Insufficient number of students\n");
system("pause");
return 1;
}
srand((unsigned)time(NULL));
for(int i = 0; i < WIN_COUNT; )
{
int idx = rand() % total;
if(!selected[idx])
{
selected[idx] = 1;
winner[i++] = stuArr[idx];
}
}
printf("===== Winner List =====\n");
printf("ID\t\tName\t\tClass\n");
for(int i = 0; i < WIN_COUNT; i++)
{
printf("%ld\t%s\t%s\n",winner[i].id,winner[i].name,winner[i].className);
}
printf("\nEnter output filename:");
scanf("%s", saveFileName);
fpWrite = fopen(saveFileName, "w");
fprintf(fpWrite, "Winner List\n");
fprintf(fpWrite, "ID\tName\tClass\n");
for(int i = 0; i < WIN_COUNT; i++)
{
fprintf(fpWrite, "%ld\t%s\t%s\n",winner[i].id,winner[i].name,winner[i].className);
}
fclose(fpWrite);
printf("Data saved to %s successfully\n", saveFileName);
system("pause");
return 0;
}