如果我的521个txt文件的名字只有一部分是数字1到521呢,另一部分是固定的字符,怎么随机读取呢
时间: 2024-03-13 10:47:52 浏览: 12
如果的 TXT 文件名字只有一部分是数字,另一部分是固定的字符,那么可以使用 C 语言的字符串处理函数来解析文件名。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main() {
// 初始化随机数种子
srand(time(NULL));
// 生成一个随机数
int random_number = rand() % 521 + 1;
// 生成文件名
char file_name[20];
sprintf(file_name, "prefix%dsuffix.txt", random_number);
// 解析文件名
char number_string[10];
strncpy(number_string, file_name + 6, 3);
number_string[3] = '\0';
int file_number = atoi(number_string);
// 打开文件
FILE *fp = fopen(file_name, "r");
// 判断文件是否打开成功
if (fp == NULL) {
printf("Unable to open file\n");
return 1;
}
// 读取文件内容
char buffer[255];
while (fgets(buffer, 255, fp) != NULL) {
printf("%s", buffer);
}
// 关闭文件
fclose(fp);
return 0;
}
```
在这个示例中,我们首先使用 `srand()` 函数初始化随机数种子,然后使用 `rand()` 函数生成一个随机数。为了确保生成的随机数在 1 到 521 之间,我们使用了 `%` 运算符和 `+` 运算符。然后,我们使用 `sprintf()` 函数生成要读取的 TXT 文件的名称。在这个示例中,文件名的前缀为 `prefix`,后缀为 `suffix.txt`,中间部分为要生成的数字。我们使用 `strncpy()` 函数和 `atoi()` 函数解析文件名,并将解析出的数字存储在 `file_number` 变量中。最后,我们使用 `fopen()` 函数打开该文件。如果文件无法打开,程序将输出一条错误消息并退出。如果文件成功打开,程序将使用 `fgets()` 函数逐行读取文件内容,并将每行输出到控制台。最后,程序使用 `fclose()` 函数关闭文件。
请注意,在解析文件名时,我们使用了 `strncpy()` 函数将字符串的一部分复制到另一个字符串中,并使用了 `atoi()` 函数将字符串转换为整数。如果您的文件名的格式不同,您需要相应地更改解析文件名的代码。