帮我用c语言写从文件中读入国家信息让用户选择国籍,并且输出用户选择的国家
时间: 2024-05-12 19:17:59 浏览: 58
您好!这个问题是关于编程的,很高兴我能回答您。
以下是用C语言从文件中读入国家信息让用户选择国籍,并输出用户选择的国家的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义最大国家数量
int main()
{
FILE *fp;
char buf[1024], *p;
char country[MAX_SIZE][MAX_SIZE];
int i = 0, j, selection;
fp = fopen("country.txt", "r"); // 打开文件
if(fp == NULL) // 如果出现错误
{
printf("无法打开文件\n");
exit(1); // 终止程序
}
while(fgets(buf, 1024, fp)) // 逐行读取文件
{
if(i == MAX_SIZE) // 国家数量超过最大数量
{
printf("国家数量超过最大数量\n");
exit(1);
}
p = strtok(buf, "\n"); // 分离出国家名字
strncpy(country[i], p, MAX_SIZE); // 复制到数组中
i++;
}
fclose(fp); // 关闭文件
printf("以下是可供选择的国家:\n");
for(j = 0; j < i; j++) // 输出可供选择的国家
{
printf("%d. %s\n", j + 1, country[j]);
}
printf("请选择一个国家(输入对应数字):\n");
scanf("%d", &selection);
if(selection >= 1 && selection <= i) // 如果输入数字合法
{
printf("您选择了:%s\n", country[selection - 1]); // 输出用户选择的国家
}
else // 如果输入数字非法
{
printf("输入数字非法\n");
}
return 0;
}
```
请注意,文件名需要替换为实际文件名,并且文件中应该存储每个国家的名字,每个名字占据一行,没有其他内容。此代码可以正确处理国家数量超过最大数量的情况,但不能处理文件格式不正确的情况。
阅读全文