源程序Bwriter.java,从键盘输入一系列字符串,写入到某磁盘文件中

本文介绍了一个使用Java实现的简单程序示例,该程序通过标准输入接收字符串,并使用BufferedReader与BufferedWriter将其写入名为file1.txt的文件中。文章详细展示了如何创建InputStreamReader、BufferedReader、FileWriter及BufferedWriter对象,并通过循环读取用户输入直至空行为止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java. io.*;  
public class Bwriter  
  {  
   public static void main(String args[]) throws Exception  
  {  
   InputStreamReader i=new InputStreamReader(System.in);  
   BufferedReader b=new BufferedReader(i);  
   FileWriter f=new FileWriter("file1.txt");  
   BufferedWriter w=new BufferedWriter(f);  
      String s;  
      while(true)  
         {  
           System.out.print("input a string:");  
           System.out.flush();  
              s=b.readLine();  
              if(s.length()==0)  
              break;  
              w.write(s);  
              w.newLine();  
                }  
              w.close( );   
              }  
       } 


【程序分析】

  如果用户输入的内容如下图表示,则file1.txt文件中的内容如图显示




<think>我们根据用户需求编写程序:将输入字符串中的小写字母转换为大写字母,保存到文件letter.dat,然后从该文件读取内容并输出到屏幕。步骤:1.打开文件letter.dat用于写入(模式"w")。2.从标准输入(键盘)获取字符串。3.遍历字符串,将小写字母转换为大写字母(使用toupper函数或自己实现转换)。4.将转换后的字符串写入文件。5.关闭文件。6.重新打开文件letter.dat用于读取(模式"r")。7.文件中读取内容(可以逐字符或整行读取)。8.将读取的内容输出到屏幕。9.关闭文件。注意:程序需要包含必要的头文件,并处理文件打开失败的情况。根据引用[1]中的部分代码,我们可以参考一些文件操作的写法,但注意用户要求保存到letter.dat,且程序命名为ex2.c。参考代码:*/#include<stdio.h>#include<ctype.h>//包含toupper函数intmain(){FILE*fp;charstr[100];inti=0;//从键盘输入字符串printf("请输入字符串:");fgets(str,100,stdin);//使用fgets可以避免缓冲区溢出//将小写字母转换为大写while(str[i]){str[i]=toupper((unsignedchar)str[i]);i++;}//打开文件用于写入fp=fopen("letter.dat","w");if(fp==NULL){printf("无法打开文件进行写入!\n");return1;}//将转换后的字符串写入文件fprintf(fp,"%s",str);fclose(fp);//重新打开文件用于读取fp=fopen("letter.dat","r");if(fp==NULL){printf("无法打开文件进行读取!\n");return1;}//读取文件内容并输出到屏幕printf("文件内容为:");while(fgets(str,100,fp)!=NULL){printf("%s",str);}fclose(fp);return0;}/*说明:1.使用fgets读取用户输入,可以读取包含空格的字符串(最多99个字符,因为最后一个位置留给'\0')。2.使用toupper函数将每个字符转换为大写(如果是小写字母则转换,否则不变)。3.写入文件后关闭文件,再重新打开用于读取,以确保写入的内容已经保存。4.读取文件时使用循环,虽然这里只有一行,但用循环可以读取多行(如果文件有多行)。5.注意文件打开失败的处理。注意:如果用户输入字符串长度超过99,则fgets会截断,但不会导致溢出。用户要求源程序命名为ex2.c,因此保存为ex2.c即可。相关问题:1.如果文件letter.dat已经存在,这个程序会覆盖原有内容吗?2.如何修改程序以支持追加写入而不是覆盖?3.除了使用toupper函数,还有哪些方法可以实现小写字母转大写字母?*/</think>以下是根据您的要求编写的C语言程序 `ex2.c`,实现将输入字符串中小写字母转为大写后保存至文件,再从文件读取并显示的功能: ```c #include <stdio.h> #include <ctype.h> // 包含字符处理函数 int main() { FILE *fp; char str[100]; int i = 0; /* 输入字符串处理 */ printf("请输入字符串: "); fgets(str, sizeof(str), stdin); // 安全读取输入 /* 小写转大写 */ while (str[i]) { str[i] = toupper((unsigned char)str[i]); i++; } /* 写入文件 */ fp = fopen("letter.dat", "w"); if (fp == NULL) { printf("无法创建文件!\n"); return 1; } fputs(str, fp); fclose(fp); /* 读取并显示 */ fp = fopen("letter.dat", "r"); if (fp == NULL) { printf("无法读取文件!\n"); return 1; } printf("文件内容: "); while (fgets(str, sizeof(str), fp) != NULL) { printf("%s", str); } fclose(fp); return 0; } ``` ### 程序说明: 1. **核心功能**: - `fgets()` 安全获取用户输入(避免缓冲区溢出) - `toupper()` 实现小写字母转大写[^1] - 文件操作流程:写入(`"w"`模式) → 关闭 → 重新打开(`"r"`模式) → 读取 2. **关键点**: - 使用 `sizeof(str)` 确保缓冲区安全 - 文件操作后立即关闭并检查错误 - 支持包含空格的字符串处理 - 正确处理文件结束符 3. **执行流程**: ``` 输入: Hello World! 文件保存: HELLO WORLD! 屏幕输出: 文件内容: HELLO WORLD! ``` ### 编译运行: ```bash gcc ex2.c -o ex2 ./ex2 ``` ### 文件验证: ```bash cat letter.dat # 查看生成的文件内容 ``` ### 注意事项: 1. 程序会在**当前目录**生成 `letter.dat` 文件 2. 输入长度超过99字符时会被截断(缓冲区保护) 3. 中文等非ASCII字符不会被转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值