社区
C语言
帖子详情
往文件里写空格是有乱码
Brainin
2011-05-28 12:02:16
[code=C/C++][#include<stdio.h>
int main()
{
FIEL *fp;
char *kong=" ";
char ch[2]={'a','b'};
fp=fopen("test.txt","w");
fputs(ch,fp);
fputs(kong,fp);
return 0;
}]
当kong数组为偶数个空格时写入没有乱码出现。当为奇数个空格时有乱码。这是为什么呢?
VC++ 6.0平台。
...全文
369
21
打赏
收藏
往文件里写空格是有乱码
[code=C/C++][#include int main() { FIEL *fp; char *kong=" "; char ch[2]={'a','b'}; fp=fopen("test.txt","w"); fputs(ch,fp); fputs(kong,fp); return 0; }] 当kong数组为偶数个空格时写入没有乱码出现。当为奇数个空格时有乱码。这是为什么呢? VC++ 6.0平台。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xspace_time
2011-05-31
打赏
举报
回复
在文件件没有关闭之前,字符存在于文件缓冲区,昨天直接移动fp指针增加了'\0'
今天搞不出来了,郁闷,大体上是
fp=fopen("test111.txt","w");
fputs(ch,fp);
fputs(kong,fp);
fp--;
fputc(0x00,fp);
fclose(fp);
或者
fp=fopen("test111.txt","w");
fputs(ch,fp);
fputs(kong,fp);
while(*fp!='\n')fp--;
while(*fp==ch[0]||*fp==ch[1]||fp==kong)fp++
fputc('\0',fp);
fclose(fp);
Brainin
2011-05-31
打赏
举报
回复
谢谢大家了。分少。结贴。
如此美丽的你
2011-05-30
打赏
举报
回复
[Quote=引用 11 楼 cqltwslt 的回复:]
结束符'\0'的问题,注意ch[2]={'a','b'}与ch=“ab”
前者是字符数组,在ch[n>2]={'a','b'}会在后面加'0';
后者是字符串都会在后面加'0';
由于你定义了ch[2]={'a','b'}就出现ls的情况!!
[/Quote]
++
Brainin
2011-05-30
打赏
举报
回复
谢谢大家。那为什么偶数个空格就没有乱码了呢?
Brainin
2011-05-28
打赏
举报
回复
[code=C/C++][/#iclude]
Brainin
2011-05-28
打赏
举报
回复
那用什么?还有那为什么偶数个空格就没有问题呢?
「已注销」
2011-05-28
打赏
举报
回复
字符串ch不是以'\0'结束。。。所以用fputs的结果是无法预知的。。。
cqltwslt
2011-05-28
打赏
举报
回复
结束符'\0'的问题,注意ch[2]={'a','b'}与ch=“ab”
前者是字符数组,在ch[n>2]={'a','b'}会在后面加'0';
后者是字符串都会在后面加'0';
由于你定义了ch[2]={'a','b'}就出现ls的情况!!
就想叫yoko
2011-05-28
打赏
举报
回复
char ch[3] = {'a', 'b', '\0'};
char ch[3] = "ab";
高性能架构探索
2011-05-28
打赏
举报
回复
字符数组或字符串,在输出的时候,都会找'\0',找到了则输出结束,否则一直往下一处内存找,一直到找到
这就出现了乱码的情况
所以你得在字符数组后面最后一位设为'\0'
無_1024
2011-05-28
打赏
举报
回复
结束符
Brainin
2011-05-28
打赏
举报
回复
[Quote=引用 5 楼 shaoxiaojing5193 的回复:]
啊,我发现问题了。。。ch[]="a b"; 这样才是以'\0'结尾,这样就行了。。。至于你说的如果空格数是偶数时就没有乱码,是奇数就有乱码这点我不清楚,因为在我的机子测试无论是奇数还是偶数,按照你的程序都会有乱码出现。因为,你用fputs函数写入文本,直接打开文本看到的就会是乱码,你用fgets读取出来然后显示到屏幕就不是乱码了,你看下我的代码:
#include<stdio.h>
#inc……
[/Quote]
恩、这样确实没有乱码了。我想着也是数组的问题,可没有想明白是怎么回事。
laoyang103
2011-05-28
打赏
举报
回复
用fprintf就好啦 就像你用printf一样 显示器上是什么样的数据
文件里面就是什么样的数据 很好用 还有fscanf
shaoxiaojing5193
2011-05-28
打赏
举报
回复
啊,我发现问题了。。。ch[]="a b"; 这样才是以'\0'结尾,这样就行了。。。至于你说的如果空格数是偶数时就没有乱码,是奇数就有乱码这点我不清楚,因为在我的机子测试无论是奇数还是偶数,按照你的程序都会有乱码出现。因为,你用fputs函数写入文本,直接打开文本看到的就会是乱码,你用fgets读取出来然后显示到屏幕就不是乱码了,你看下我的代码:
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char *kong=" ";
char ch[]="a b";
char a[20];
fp=fopen("test111.txt","w");
fputs(ch,fp);
fputs(kong,fp);
fclose(fp);
fp=fopen("test111.txt","r");
fgets(a,20,fp);
printf("%s",a);
}
shaoxiaojing5193
2011-05-28
打赏
举报
回复
啊 ,我也想知道为什么。。。可是在我的机子上测试无论空格数是奇数还是偶数好像都会出现乱码,郁闷 等待正解。。。。
wizard_tiger
2011-05-28
打赏
举报
回复
ch[2]={'a','b'};
ch="ab";//这个相当于ch[3]={'a','b','\0'};
downmooner
2011-05-28
打赏
举报
回复
fputs(ch,fp); ch不是字符串。
AnYidan
2011-05-28
打赏
举报
回复
c 中本无 字符串,只是以'\0'结尾的字符数组
彻底解决Asp.net
文件
下载时
文件
名的中文
乱码
和
空格
异常全球性技术难题
彻底解决Asp.net
文件
下载时
文件
名的中文
乱码
和
空格
异常全球性技术难题 本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出
文件
流时
文件
名的
空格
及中文字符
乱码
这两个问题。使用本文的代码,你将可以让 IE...
在FireFox/IE下Response中文
文件
名
乱码
问题解决方案
只是针对没有
空格
和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的
文件
,并且IE下输出的
文件
名中
空格
不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所...
csv导出
文件
解决中文
乱码
和
文件
名
空格
问题
csv导出
文件
解决中文
乱码
和
文件
名
空格
问题 开发环境 前端:Vue 后端:Java 问题的出现: 1、csv的
文件
中文内容 excel打开是
乱码
,wps没问题(wps会进行不同的编码转换,excel不会) 2、其他未出现但潜在的问题...
Springboot下载
文件
,
文件
名中文是
乱码
,
空格
变加号
不能直接把
空格
替换成%20, 因为%会被url编码转成%25, 虽然可以再手动替换回来, 但太麻烦了。默认把
文件
名放上去, 中文会
乱码
,
文件
名种有
空格
, 就会被截断。就先url编码, 再替换+号即可。
kettle-文本
文件
输出的内容有
空格
/表输入读取的数据
乱码
通常在使用kettle控件-文本
文件
输出,发现不管怎么设置字段类型的大小,导出的数据都会出现
空格
,特别是在批量导出时,文本
文件
输出传入的都是变量,无法获知具体的字段名的时候,此时在文本
文件
输出的勾选此项()...
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章