csv檔抽籤程式 c語言 簡單化
时间: 2024-01-23 19:13:07 浏览: 10
以下是一个简单的C语言CSV文件抽奖程序的示例,它可以从CSV文件中读取数据并随机选择一个获胜者:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_LINE_LENGTH 1024
#define MAX_FIELD_LENGTH 128
#define MAX_FIELDS 32
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <csv_file>\n", argv[0]);
return 1;
}
char *filename = argv[1];
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
return 1;
}
char line[MAX_LINE_LENGTH];
char *fields[MAX_FIELDS]; int num_fields = 0;
// 读取CSV文件的标题行
if (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
// 去掉行末的换行符
line[strcspn(line, "\r\n")] = '\0';
// 解析标题行中的字段
char *field = strtok(line, ",");
while (field != NULL && num_fields < MAX_FIELDS) {
fields[num_fields++] = field;
field = strtok(NULL, ",");
}
}
// 读取CSV文件中的数据行
int num_entries = 0;
char entries[MAX_FIELDS][MAX_FIELD_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, fp) != NULL && num_entries < MAX_FIELDS) {
// 去掉行末的换行符
line[strcspn(line, "\r\n")] = '\0';
// 解析数据行中的字段
char *field = strtok(line, ",");
int i = 0;
while (field != NULL && i < num_fields) {
strncpy(entries[num_entries++], field, MAX_FIELD_LENGTH);
field = strtok(NULL, ",");
i++;
}
}
// 随机选择一个获胜者
srand(time(NULL));
int winner_index = rand() % num_entries;
char *winner_name = entries[winner_index];
printf("The winner is: %s\n", winner_name);
fclose(fp);
return 0;
}
```