|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好 这里有一个题目 要求把给定的txt文件里的一段话进行处理 处理后每个字符直接均匀一个空格,并存放在另一个txt文件中 另外这个要读的文件中既有汉字又有英文 我遇到的问题是不加fputc(kongge,fp)时能把内容读入,但一加上后,汉字就变成乱码 还请大家指点迷津,如果可以的话能把代码写出就更好了 另外,我的代码一定存在不少不规整的地方,希望大家不吝赐教,不胜感激
我自己设计的代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch,kongge;
FILE *fp;
FILE *fb;
if(!(fp=fopen("test.txt","r")))
{
printf("cant open the test.txt");
system("pause");
return 0;
}
if(!(fb=fopen("testtest.txt","a"))){
printf("cant open the testtest.txt");
system("pause");
}
kongge='\0';
fgetc(ch,fp);
while(!feof(fp)){
fputs(ch,fb);
fget(ch,fp);
fput(kongge,fp);
}
fclose(fp);
fclose(fb);
system("pause");
return 0;
}
本帖最后由 ravenhu13 于 2017-10-3 21:25 编辑
实现了你的需求,不过不是用fputc的,这里着重需要注意的是读取进的时候要对字符进行判断中文还是英文分别处理。代码如下:
-
- #include <fstream>
- #include<string>
- #include<iostream>
- /*下面这个函数可能是难点*/
- string soloveword(string unsolvesentence) {
- string sentence;
- for (int i = 0; i < unsolvesentence.length(); i++)
- {
- if (unsolvesentence[i] < 255 && unsolvesentence[i]>0)//扩充的ASCII字符范围为0-255,如是,处理一个字节
- {
- sentence.append(unsolvesentence.substr(i, 1));
- sentence.append(" ");
- }
- else//<0,>255的是汉字,处理两个字节
- {
- sentence.append(unsolvesentence.substr(i, 2));
- sentence.append(" ");
- ++i;
- }
- }
- return sentence;
- }
- void changefile(string inputfile,string outputfile) {
- /*要求把给定的txt文件里的一段话进行处理
- 处理后每个字符直接均匀一个空格,
- 并存放在另一个txt文件中
- 另外这个要读的文件中既有汉字又有英文*/
- ifstream in(inputfile);
- ofstream out(outputfile);
- out.clear();
- string unsentence,sentence,word;
- while (getline(in, unsentence))
- {
- sentence = soloveword(unsentence);
- out << sentence;
- }
- }
- int main(int argc, char *argv[])
- {
- changefile("f:\\1.txt","f:\\2.txt");
- return 0;
- }
复制代码
效果图如下:
|
|