下列程序的功能为:从键盘输入字符,直到输入ECF(Grl+z)为止。对于输入的小写字符,先转换为相应的大写字符,其他字符不变,然后逐个输出到文件text.txt中,行结束符回(\n)也作为一个字符对待,最后统计文件中的字符个数和行数。
可以使用一个循环来从键盘获取输入字符到文件中,遇到EOF信号则结束循环打印结果;在循环中,则进行大写字母转换和行数和字符数的统计即可,代码如下:
参考链接:
学习C的知识点十三--文件_无所谓จุ๊บ的博客-CSDN博客
C语言:getchar( ) 函数详解_CodeWinter的博客-CSDN博客_getchar
ASCII 表 | 菜鸟教程
#include <stdio.h>
int main(void){
char ch;
int charNums=0; //字符个数
int lineNums=0; //行数
// https://blog.csdn.net/weixin_45114627/article/details/126102548
FILE *fp = fopen("text.txt","w"); //以写模式打开文件 text.txt
if(fp==NULL){
printf("文件打开或创建失败!\n");
return 0;
}
printf("请输入字符(输入CTRL+Z结束):\n");
// https://blog.csdn.net/weixin_48025315/article/details/119381482
while((ch=getchar())!=EOF){ // 从输入获取字符,直到遇到EOF信号结束
charNums++; //如果遇到的不是EOF,则字符个数+1
if(ch>='A'&&ch<='Z'){ //如果是大写字母
// https://www.runoob.com/w3cnote/ascii.html
ch=ch+32; // 大写字母转为对应的小写字母
}
if(ch=='\n'){ //如果当前字符为换行符,则行数+1
lineNums++;
}
fprintf(fp,"%c",ch); //把当前字符写入文件中
}
fclose(fp); // 关闭文件
//打印结果
printf("字符个数为;%d.\n",charNums);
printf("行数为:%d.\n",lineNums);
return 0;
}