社区
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平台。
...全文
443
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写文章
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'结尾的字符数组
csv导出
文件
解决中文
乱码
和
文件
名
空格
问题
该博客介绍了在Vue和Java环境下,处理CSV导出时可能出现的中文
乱码
和
文件
名含有
空格
的问题。前端通过设置'httpresponseType'为'blob'并解码fileName来避免
乱码
,同时处理
文件
名中的
空格
。后端使用UrlEncoder对
文件
名进行编码,并用'%20'替换
空格
。这些方法同样适用于其他类型的
文件
下载场景。
关于下载
文件
是
文件
名的
空格
显示不出来和
乱码
问题 转
本文提供了一种在ASP.NET中解决
文件
名
乱码
及
空格
问题的方法,通过使用16进制编码,实现了在IE、Opera、Firefox及Chrome等浏览器中正确显示中文和
空格
的
文件
名。
java
空格
乱码
_java 中文
乱码
以及
空格
乱码
解决方案总结
博客主要讲述Java开发中遇到的
乱码
问题及解决办法。包括使用response.write返回JSON数据时的编码设置,下载
文件
时
空格
或中文
乱码
的处理,以及发送邮件时接收端邮件标题和附件
乱码
的解决,涉及FF和IE不同浏览器的处理方式。
整理java
文件
下载(中文
乱码
、火狐浏览器
乱码
、
空格
变+号、
文件
名包含
空格
时
文件
名可能显示不全等问题)
这篇博客总结了解决Java
文件
下载中出现的中文
乱码
、火狐浏览器下载时
乱码
以及
空格
被转换为+号等问题的方法。通过特定的编码处理和字符串替换,可以确保
文件
名正确显示和下载。
下载
文件
中文总
乱码
文件
名带
空格
总会有问题?
本文介绍了一种解决
文件
下载时中文名
乱码
的方法,并详细解释了如何处理
文件
名中的
空格
字符,确保不同浏览器都能正确显示
文件
名称。
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章