```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[1000], ch
int i = 0, letter_count = 0, digit_count = 0, space_count = 0, other_count = 0
// 从用户输入中读取字符串
printf("Enter a string: ")
fgets(str, sizeof(str), stdin)
// 将字符串写入文件并统计字符出现次数
FILE *fp = fopen("input.txt", "w")
if (fp == NULL) {
perror("fopen")
return 1
}
while ((ch = str[i++]) != '\0') {
fputc(ch, fp)
if (isalpha(ch)) {
letter_count++
} else if (isdigit(ch)) {
digit_count++
} else if (isspace(ch)) {
space_count++
} else {
other_count++
}
}
fclose(fp)
// 统计字母和数字出现次数并将其存入文件
fp = fopen("output.txt", "w")
if (fp == NULL) {
perror("fopen")
return 1
}
fprintf(fp, "Letters: %d\n", letter_count)
fprintf(fp, "Digits: %d\n", digit_count)
fclose(fp)
// 输出字符出现次数的统计结果
printf("Letter count: %d\n", letter_count)
printf("Digit count: %d\n", digit_count)
printf("Space count: %d\n", space_count)
printf("Other count: %d\n", other_count)
return 0
}
```
在上述代码中,我们使用 `fgets()` 函数从用户输入中读取字符串,并将其写入名为 `input.txt` 的文本文件中。在此过程中,我们使用了 `isalpha()` 和 `isdigit()` 等函数判断字符类型,并统计其中字母、数字、空格和其他字符的出现次数。
然后,我们使用 `fprintf()` 函数将字母和数字的出现次数分别存入名为 `output.txt` 的文件中。
最后,输出字符出现次数的统计结果。
需要注意的是,在实际应用中还需要考虑更多的边界情况和错误处理。例如,可能出现无法打开或关闭文件、读写文件出错等问题。此外,如果输入的字符串超出预设数组大小,可能会引起缓冲区溢出等问题。
1、首先输入下方的代码
#include <stdio.h>
int main()
{
//下面是写数据,将数字0~9写入到data.txt文件中
FILE *fpWrite=fopen("data.txt","w")
if(fpWrite==NULL)
{
return 0
}
for(int i=0i<10i++)
fprintf(fpWrite,"%d ",i)
fclose(fpWrite)
//下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上
int a[10]={0}
FILE *fpRead=fopen("data.txt","r")
if(fpRead==NULL)
{
return 0
}
for(int i=0i<10i++)
{
fscanf(fpRead,"%d ",&a[i])
printf("%d ",a[i])
}
getchar()//等待
return 1
}
2、面是写入到txt后的截图:
3、下面是读取文件后打印数据到控制台的截图。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)