用c语言写,在main函数中创建一个文件,将键盘输入的字符串(该字符串只包含数字、字母和*)写入文件中。打开该文件,读出字符串。将字符串中的*号放到最前面,数字放到中间,字母放到最后,并将形成的新串存放到另一个文件中。比如,*a*C12d3*,经变换为,***123aC d。
时间: 2024-01-17 18:23:04 浏览: 107
好的,我会尽我所能地帮助你解决这个问题。
你可以按照以下步骤来实现:
1. 在 main 函数中创建一个文件,可以使用 fopen 函数,指定文件名和打开模式 "w"。
2. 从键盘输入一个字符串,可以使用 scanf 函数,指定格式字符串 "%s"。
3. 将输入的字符串写入文件中,可以使用 fprintf 函数,指定文件指针和格式字符串 "%s"。
4. 关闭文件,可以使用 fclose 函数,指定文件指针。
5. 打开该文件,可以使用 fopen 函数,指定文件名和打开模式 "r"。
6. 读出字符串,可以使用 fgets 函数,指定读取缓冲区和最大字符数。
7. 关闭文件,可以使用 fclose 函数,指定文件指针。
8. 将字符串中的 * 号、数字和字母分别存放到不同的数组中。
9. 按照要求重新排列数组中的元素,可以使用 for 循环和 if 语句。
10. 将形成的新串存放到另一个文件中,可以使用 fopen 函数,指定文件名和打开模式 "w"。
11. 将新串写入文件中,可以使用 fprintf 函数,指定文件指针和格式字符串 "%s"。
12. 关闭文件,可以使用 fclose 函数,指定文件指针。
下面是示例代码,供你参考:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fp1, *fp2;
char str[100];
char stars[100], digits[100], letters[100];
int i, j = 0, k = 0, l = 0;
// 创建文件
fp1 = fopen("input.txt", "w");
if (fp1 == NULL) {
printf("Error opening file\n");
return 1;
}
// 输入字符串,并写入文件
printf("Enter a string: ");
scanf("%s", str);
fprintf(fp1, "%s", str);
// 关闭文件
fclose(fp1);
// 打开文件
fp1 = fopen("input.txt", "r");
if (fp1 == NULL) {
printf("Error opening file\n");
return 1;
}
// 读出字符串
fgets(str, sizeof(str), fp1);
// 关闭文件
fclose(fp1);
// 分离 * 号、数字和字母
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == '*') {
stars[j++] = '*';
} else if (isdigit(str[i])) {
digits[k++] = str[i];
} else if (isalpha(str[i])) {
letters[l++] = str[i];
}
}
// 重新排列数组中的元素
for (i = 0; i < j; i++) {
str[i] = stars[i];
}
for (i = j; i < j + k; i++) {
str[i] = digits[i - j];
}
for (i = j + k; i < j + k + l; i++) {
str[i] = letters[i - j - k];
}
str[i] = '\0';
// 创建文件
fp2 = fopen("output.txt", "w");
if (fp2 == NULL) {
printf("Error opening file\n");
return 1;
}
// 写入新串,并关闭文件
fprintf(fp2, "%s", str);
fclose(fp2);
return 0;
}
```
希望这个程序能够帮助到你,如果你有任何问题,请随时问我。
阅读全文