前几天闲来无事,写了一段代码,用来随机抽取的,大家可以试试看~
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct
{
char str[20]; //名字
int no; //号码
}a[99]={{" ",0}}; //初始化
int main()
{
FILE *fp;
char ch;
int i,n=0,choice,who;
fp=fopen("name.txt","r");
if(fp==NULL)
{
printf("can not open the file\n");
return 1;
}
while((ch=fgetc(fp))!=EOF)
{
if(ch=='\n')n++; //一行一个名字,计算人数
}
rewind(fp);
for(i=0;i<n;i++)
{
a[i].no=i; //每人对应的号码
fscanf(fp,"%s\n",a[i].str);
}1
1 srand(time(NULL));
for(i=1;i<n;i++)
{
printf("=============\n1.抽取 0.退出\n=============\n");
scanf("%d",&choice);
if(choice==1)
{
loop:
who=rand()%n+1;
if(a[who].no==0)goto loop;
puts(a[who].str);
a[who].no=0; //抽取过的标志为0
}
else break;
}
fclose(fp);
return 0;
}
你需要在同一目录下新建一个“name.txt”,然后在里面写上你需要抽取的姓名,然后编译并运行就可以~~~~~