C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因
一.txt文件中的内容是中文,重定向输入显示乱码原因:
是因为文本文件的编码和和编译器的不一致导致的.我文本文件用的编码是UTF-8,而编译器是ANSI,不匹配,所以输出乱码.文本另存为时把编码改为ANSI后就ok了.
二.什么是重定向输入?
下面这段程序获取用户从键盘的输入.
/*test.c--重复输入直到文件结尾*/
#include<stdio.h>
int main(void)
{
int ch;
while ((ch = getchar()) != EOF) //EOF(end of file),是一个值,标志检测到文件结尾.
putchar(ch);
return 0;
}
假设已经编译了test.c程序,并生成了一个名为test.exe(windows中后缀为.exe)的可执行文件.现在给你一个文本文件(words.txt),其内容是"不经一番寒彻骨,怎得梅花扑鼻香。".要你用上述程序读取这个文本文件的内容并把字符逐个打印在屏幕上.
这就是重定向输入.从原本要键盘输入,到现在文件输入.
步骤:
1.将test.exe和words.txt放在同一个目录下.
2.然后win+R,输入CMD命令.
输入命令 test.exe < words.txt
按下回车,结果是乱码.而不是"不经一番寒彻骨,怎得梅花扑鼻香。".
3.查找解决方法,得知是文本文件编码的问题.数字或者英文都可以,就是中文出现了乱码.
原本编码是UTF-8,另存为words2.txt编码改为ANSI.
再次输入命令 test.exe < words2.txt
按下回车
屏幕成功输出"不经一番寒彻骨,怎得梅花扑鼻香。".
< 符号是UNIX和DOS/Windows的重定向运算符.它让words文件与stdin流相关联,把文本中的内容导入test.exe程序.而test.exe程序本身并不知道输入的内容来自文件还是键盘,它只知道这是需要导入的字符流.
因为c把文件和I/O设备放在一个地位层面,所以文件就是现在的I/O设备.
三.从概念上看,c程序处理的是流而不是直接处理文件.流(stream)是一个由实际输入或输出来映射的理想化数据流.所以不同属性不同种类的输入由属性更统一的流来表示.于是,打开文件的过程就是把流与文件相关联,读写都通过流来完成.
可以这么理解,c 把输入和输出设备视为存储设备上的普通文件,尤其是把键盘和显示设备视为每个c程序自动打开的文件.stdin流 表示键盘输入,stdout流 表示屏幕输出.
C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因的更多相关文章
- Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt ...
- 如何比较两个txt文件内容的细微差别
如何比较两个txt文件内容的细微差别 https://jingyan.baidu.com/article/19020a0a1dd04a529c284272.html 听语音 | 浏览:3500 | 更 ...
- java读取txt文件内容
package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...
- Java 读取 txt 文件内容到容器 List
方法一: 一.桌面上准备 DataObject.txt 文件,内容为: 二.打开 Eclipse,编写代码如下: import java.io.BufferedReader; import java. ...
- JAVA获取txt文件内容
JAVA 读取txt文件内容 通常,我们可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可. public class txttest { /** * 读 ...
- ZK中使用JS读取客户端txt文件内容问题
最近写一个需求时遇到一个问题,用户需要通过点击一个按钮直接读取他自己电脑上D盘的一个txt文件内容显示到页面,因为项目现在是用ZK写的.我对于ZK也是刚刚了解不就,很多都还不是很熟.起初我是想用io流 ...
- 字节流,读取 a.txt 文件内容,并打印出来
import java.io.FileInputStream;import java.io.IOException; /** 字节流,读取 a.txt 文件内容,并打印出来 */public clas ...
- 下载apk文件浏览器会直接打开并显示乱码的问题
今天同事反映他的apk文件在自己的老项目中下载有问题:下载apk文件浏览器会直接打开并显示乱码,在别的项目中就没有问题. 后分析response的content-type发现,老项目的类型是text/ ...
- C语言 创建一个 txt 文件 bin输入字符 保存文件在工作文件夹里
int main(void) { char s[70]; FILE *fp; fp=fopen("123.txt","r"); if((fp=fopen(&qu ...
随机推荐
- 构建基于React18的电子表格程序
背景 2022年3月29日,React正式发布18.0.0.本次升级内容包括开箱即用的改进,如自动批处理.新的API(如startTransition)和支持Suspense 的流式服务器端渲染.关于 ...
- 2021.04.03【NOIP提高B组】模拟 总结
T1 题目大意:求最小的 \(n\in[0,lim]\) 使得区间 \([L,R]\) 在线段树建树 \(build(0,n)\) 的区间内 考场时想到了正解,结果推式子退错了... 其实就是从下往上 ...
- 【题解】Codeforces Round #798 (Div. 2)
本篇为 Codeforces Round #798 (Div. 2) 也就是 CF1689 的题解,因本人水平比较菜,所以只有前四题 A.Lex String 题目描述 原题面 给定两个字符串 \(a ...
- flink-执行模式
flink的执行模式 flink既能处理离线数据,也能处理实时数据,在1.12.0版本以前,批数据返回的数据集合是dataSet,对应一套dataSet的api,从1.12.0版本以后,flink实现 ...
- JS:函数的形参与实参
形参: 函数显式参数在函数定义时列出. 函数调用未传参时,参数会默认设置为: undefined. function fn(a,b,c){ //a,b,c为形参 //此时有一个隐式操作:var a,v ...
- ShardingSphere-proxy-5.0.0容量范围分片的实现(五)
一.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Foundation (ASF) under one or ...
- SAP Using Text Modules in Adobe Forms
In this demo we will create an adobe form which displays text in two different languages (English or ...
- c++(qt)播放wav文件的四种方式
//方法一(要符合RIFF规范) 1 QSound::play("E:/Projects/报警声1-1.wav"); //方法二(要符合RIFF规范) 1 QSoundEffect ...
- thymeleaf实现前后端数据交换
1.前端传数据后端接收: 用户在登录界面输入用户名和密码传给后端controller,由后端判断是否正确! 在html界面中要传递的数据name命名,通过表单的提交按钮会传递给响应的controlle ...
- vue封装原生的可预览裁剪上传图片插件H5,PC端都可以使用
思路:1.先做出一个上传的图片的上传区 <!-- 上传区 --> <label for="fileUp"> <div class="upBo ...