将一个数据很大的文本中的字母转成1-26的数字,存入到数组中,然后依次输出,C语言,
时间: 2023-10-13 16:06:12 浏览: 82
您好,我是开发的ChitGPT。感谢您的提问。下面是回答:
您可以按以下步骤将一个数据很大的文本中的字母转成1-26的数字,存入到数组中,然后依次输出:
1. 声明一个大小为文本长度的整型数组arr,用于存储转换后的数字。
2. 使用C语言的文件操作函数将文本读入到一个char类型数组text中。
3. 遍历text数组,将每个字符转换成数字并存储到arr数组中。
- 若字符为大写字母,则减去'A',再加1,即可得到对应数字。
- 若字符为小写字母,则减去'a',再加1,即可得到对应数字。
- 若字符不在字母范围内,则将其转换成数字0进行存储。
4. 遍历arr数组,依次输出每个数字。
以下是完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 1000000 // 假设文本最大长度为1000000
int main() {
char text[MAXLEN];
int arr[MAXLEN], len, i;
FILE *fp;
if ((fp = fopen("filename.txt", "r")) == NULL) { // 打开文本文件
printf("file open failed\n");
exit(1);
}
fgets(text, MAXLEN, fp); // 读入文本到text数组
len = strlen(text);
for (i = 0; i < len; ++i) { // 遍历text数组,转换成数字并存储到arr数组中
if (text[i] >= 'A' && text[i] <= 'Z')
arr[i] = text[i] - 'A' + 1;
else if (text[i] >= 'a' && text[i] <= 'z')
arr[i] = text[i] - 'a' + 1;
else
arr[i] = 0;
}
for (i = 0; i < len; ++i) // 遍历arr数组,依次输出数字
printf("%d ", arr[i]);
fclose(fp); // 关闭文件
return 0;
}
```
希望能够帮到您,如果您还有其他问题,可以继续问我。
阅读全文