说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

行后去空格 就这么难么

编辑:说三道四文库 发布时间:2017-10-20 04:59
HTML文档下载 WORD文档下载 PDF文档下载
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
FILE * f =  fopen ("one.txt","r");
FILE * s =  fopen ("two.txt","a+");
char sz [10000] = {0};
while(fgets(sz,10000,f))

for(int i = strlen(sz)-1; i>= 0; i--)
{
if(sz[i] != ' ')
{
sz[++i] = '\0';
break;
}
}
fprintf(s,"%s",sz);
memset(sz,0,sizeof(sz));
}
return 0;
}


怎么还是原样输出到文件里面,竟然没作用,求解
for(int i = strlen(sz)-1; i>= 0; i--)
        {
            if(sz[i] != ' ')
            {
                sz[++i] = '\0';

                break;
            }    
        }


找到的是i,替换的是++i,也就是i的下一个
而且'\0'表示的是字符串结尾
引用 1 楼 hua_yang 的回复:
C/C++ code
for(int i = strlen(sz)-1; i>= 0; i--)
        {
            if(sz[i] != ' ')
            {
                sz[++i] = '\0';

                break;
            }    
……
 你看错了 sz[i] != ' '   不是空格的地方怎么可以用0来代替  难道去空格不是以'\0'直接来结束么
 FILE * s =  fopen ("two.txt","w");
没看懂
#include<iostream>
using namespace std;

int main()
{
    FILE * f =  fopen ("text3.txt","r");
    FILE * s =  fopen ("two.txt","a+");
    char sz [10000] = {0};
    int i;
    while(fgets(sz,10000,f))
    { 
        for( i= strlen(sz)-1; i>= 0; i--)
        {
            if(sz[i] != ' '&&sz[i] != '\n')
            {
                break;
            }    
            sz[i] = '\0';
        }
        sz[i+1] = '\n';
        fprintf(s,"%s",sz);
    }
    return 0;
}

不知道这个是不是楼主想要的,楼主看看
补充一下
#include<iostream>
using namespace std;

int main()
{
    FILE * f =  fopen ("text3.txt","r");
    FILE * s =  fopen ("two.txt","a+");
    char sz [10000] = {0};
    int i;
    while(fgets(sz,10000,f))
    { 
        for( i= strlen(sz)-1; i>= 0; i--)
        {
            if(sz[i] != ' '&&sz[i] != '\n')//找到最后一个不是空格的地方
            {
                break;
            }    
            sz[i] = '\0';//把是空格的都改成结束符
        }
        sz[i+1] = '\n';//结尾加个回车
        fprintf(s,"%s",sz);
    }
    return 0;
}
比如sz[]="ABC  \n"
那么sz[]={'A','B','C',' ',' ','\n','\0'}
strlen(sz) = 5
sz[5] = '\n' != ' '
所以你的循环只执行了一次就结束了。
恩,写错了,strlen(sz) = 6,strlen不计算\0。但是因为数组下标是从0开始,所以正好是最后一个字符‘\n’。
strlen(sz) = 6
sz[6 - 1] = '\n' != ' '
引用 6 楼 questionfish 的回复:
补充一下

C/C++ code
#include<iostream>
using namespace std;

int main()
{
    FILE * f =  fopen ("text3.txt","r");
    FILE * s =  fopen ("two.txt","a+");
    char sz [10000] = {0};
    int i;……

不小心把源文件改了。。。楼主注意再改成自己的源文件
1111111111111111111111111111111111111111111111
自己去查一下 fgets 函数的说明。上面清楚有写,该函数获取一整行字符,包含行尾的换行回车符,一块放到输入的 buffer 中。

换句话说,你的代码,执行过程中,对空格符的判断只有两种情况可能生效:
1. 整个文件末尾有空格无换行;
2. 一行字符数超过尺寸,且捕获的最后一个字符刚好是空格。

这不符合你所期待的结果。
楼主在 :
fprintf(s,"%s",sz);
后面加上:
fflush(s);

将字符串,刷新到s.
那这些空格前面有空格么?没有的话可以找到第一个空格的位置,然后把那个空格替换成'\0'
#include <stdio.h>
#include <string.h>
char ln[10000];
FILE *fi,*fo;
int i,L;
void main() {
    fi=fopen ("one.txt","r");
    if (NULL==fi) {
        printf("Can not open file one.txt!\n");
        return;
    }
    fo=fopen("two.txt","w");
    if (NULL==fo) {
        fclose(fi);
        printf("Can not create file two.txt!\n");
        return;
    }
    while (1) {
        if (NULL==fgets(ln,10000,fi)) break;
        L=strlen(ln)-1;
        if ('\n'==ln[L]) {
            ln[L]=0;
            if (L>0) {
                i=L-1;
                while (1) {
                    if (' '!=ln[i] && '\t'!=ln[i]) {
                        i++;
                        break;
                    }
                    if (i<=0) break;
                    i--;
                }
                ln[i]=0;
            }
            fprintf(fo,"%s\n",ln);
        } else {
            fprintf(stderr,"Warning: Line too long(>10000 characters).\n");
            fprintf(fo,"%s",ln);
        }
    }
    fclose(fo);
    fclose(fi);
}
为何开发者应推动公司开源? 从AppGratis被下架说起,苹果或将再次付出代价 58同城的“烦恼”——8K月薪安全工程师引发的入侵 软件开发实践的24条军规 思科 IBM 微软等巨头联合开发开源SDN项目OpenDaylight 巾帼不让须眉:2012年度云计算领域Top 10女性 中移动全力推进NFC 5月起乘公交可刷手机 支持Android与iOS,Qt 5.1 Alpha全新亮相 Google Play:劣质Android应用已无藏身之地! 360推出信用网站认证开放平台 联合百家协会围剿钓鱼网站 经验分享:百度测试架构师眼中的百度QA(一) 在线旅行服务行业开放API带来的新机遇 专访:悬疑恐怖游戏Year Walk美术及音效设计师 解密:微软都柏林数据中心的神秘“免费冷却”装置 云计算如何影响数字化营销? 榜单:十位帮我们打理数据的存储大佬 OpenStack Grizzly版发布 Comcast、CERN成为新会员 谷歌携Blink来势汹汹 WebKit将成明日黄花? 星巴克与苹果合作 顾客可免费下载付费App 微信回应信令争议 将启动2.5G网络优化计划 凤凰网CTO吴华鹏离职 先后供职长达10年 外媒:开发者每周编码时间仅19.1小时 AppGratis CEO现身说法:应用被苹果儆杀始末 一个Web设计师眼里的云计算 戴尔高管:服务器业务领先惠普五年时间 Hoodie:基于JS与CouchDB的超快速Web开发框架 设计优秀API的五大规则 盘点英特尔IDF2013第一天:技术产品新趋势 英雄组队去打怪!Nimble Quest开发团队访谈 云通讯平台打造本土Twilio 被逼无奈?传微软或明年秋发布iOS和Android版Office 在servlet里大量使用静态方法会不会有并发访问的问题 谁知道installAnywhere的注册码?100分!!! 谁有《visual C++网络高级编程》一书的配套光盘?邮电出版 开机时显示 NTLDR IS MISSING, 谁知道这是怎么回事? 急!应该用什么实现? CListCtrl如何让动态改变图标!GetItem()如何使用??,解决加分 怎样设置oracle的maximum number of processes 那个知道那里有DELPHI 7.0下啊,给分 delphi&spl GGJJ们谁有电子版《windows核心编程》的完整的第27章啊?偶的那一版这章只有半截 请教一个写入文本的问题,解决200分相送,在线等 如何做到高人一筹 有没有人能具体讲一讲关于大文本处理的过程! 函数返回值问题,给高分 DX抓图,如何保存为Bmp文件? 3个NF 嵌入文件夹窗格怎么使用 创业中的软件公司招人(有兴趣的弟兄进来看看) 数据库中事务的特点及其应用,急,不够再给分500,在线,急。 关于对话框.高分请教 创业中的软件公司招人(有兴趣的弟兄进来看看) 做的网站在IE5.0和IE6.0显示的问题 寻找采用WebSnap 技术的例子? matrxII观后感 关于JSP文件和BEAN的存放 创业中的软件公司招人(有兴趣的弟兄进来看看) c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 c#做的程序可以直接在新安装的win98下(没有.net环境)跑吗?有经验的请留步 存储过程分页有点问题,谁帮我看一下 基础问题!困扰我! 请哥哥姐姐帮忙,把下面的代码转换成VC代码 大家case工具都用到什么程度? 为什么编译的可执行文件在其他计算机无法运行? ACCESS操作问题,高手... 我是刚刚入门,请帮助 怎样把一个已建好的主域服务器更改域名(在线等) 如何得到DataGrid控件里面的某行某列得值? 关于rave报表的问题 weblogic部属程序问题! 组合查询的问题 怎样在改变一个下拉菜单,不刷新页面的情况下,改变另一个菜单的内容??? 有使用BCG库的朋友吗?有些问题不明白,想讨论一下。 sqlmangr.exe文件受到了损坏,应该怎么做恢复[急] 请问,广东的高程报名在什么时候?谢谢! lwangzi(磊子)请关注 win2000下读注册表的怪问题??? 在线等待,急急急 菜鸟百问之一 在VS.NET中无法调试ASP.NET应用程序 从一个表select等好久也没有东西返回,别的表正常,这是为什么呀 大哥大姐: 请问BC与DELPHI有什么区别 ? 问个小问题,权当散分 怎么把终端服务的3389端口号改为自己需要的端口? 光合作用第一阶段生成ATP,NADPH所需的h+和高能电子e-均来自水 这句话错在哪了,求仔细讲解 复合函数求导,如图,求导函数里有多个函数,怎么求 In case after 请举例说明. 已知函数fx的图象与函数hx=x+1/x+2的图象关于A(0,1)对称求fx解析式 中国节日 英语是什么要一个一个的说 若cosx>0,且sin2x0是一四象限,另一个我就不知道了 已知:圆O是△ABC的外接圆,且AB=AC,圆O的半径为6cm,O到BC的距离为2cm,求AC的长到底有几个答案 Vertical-align用于控制文字或图象相对与其母体元素的垂直位置. 设θ是第二象限角,则A tanθ/2>1 B tanθ/2cosθ/2 Dsinθ/2 a-b=6,ab=5.则(a+b)2=___. "放"字.钢笔.楷书,放在米字格里 99°是第二象限角吧 关于y=-x对称的函数有什么性质,和关于y=x对称的函数有什么关系 谁有钢笔楷体写字口诀 in case in case 后加虚拟怎么用啊? 函数f(x)关于y=x对称有何性质 hustle.是什么意思 become less active and more calm and happy是哪个单词 已知△ABC中,AB=AC,圆O是△ABC的外接圆,D是弧AB上一点,连DA、DB、DC.若角BAC=90°,则线段DC、AD、BD之间的数量关系为?若角BAC=120度,则线段DC、AD、BD之间的数量关系为? hustle& bustle是什么意思? 一个平行四边形的四个顶点分别是a.b.c.d如果a点的位置是(1,4),b点的位置是(0,0)c点的位置是(3,3)那么c点的位置是( ) 小兴安岭一课描写秋天的落叶表达了作者什么情绪 hustle&bustle是什么意思啊?hustle&bustle of the outside world 翻译:Their organs become weak and may stop working properly 如图所示,圆O为△ABC的外接圆,且AB=AC,过点A的直线如图,圆O为三角形ABC的外接圆.且AB=AC,过点A的直线AF交圆O于点D,交BC延长线于点F,DE是BD的延长线,连接CD(1)求证:∠EDF=∠CDF(2)求证:AB²=AF·AD(3) hustle 若α是第四象限角,试分别确定—α,180度—α是第几象限 horizontal 她说话10句有9句是说他哥哥是他亲哥哥.还有她也有时会和我说她想她的网前任男友、虽然我听了不是很舒服.但我没说什么 若a位的一象限的角,那么能确定的为正值的是?若a位的一象限的角,那么能确定的为正值的是(d)A:cos2a B:sina/2 c:cosa/2 d:tana/2a在第一象限的,那么a/2也是第一象限的吧,那么bc怎么不选阿? 如上 as applicable 如何翻译?在正规文档中,如何翻译成中文比较准确、自然?请高手指教,不要机器翻译... 如果函数y=f(x)的图像关于点P中心对称,则称函数f(x)为中心对称函数,P为对称中心1,判断函数f(x)=[(x+1)的-1/3次方]+1是否为中心对称函数,若是,求对称中心2,求证:函数g(x)=(cx+d)/(ax+b) ,a≠0为中心对称 隔字用楷体怎么写 把一个大正方体表面涂色,每条棱都平均分成2份,然后切开,能得到()个小正方体,3面涂色的有()个 高一向量题我有疑问 给出向量OA=(3,-4)向量OB=(6,-3)向量OC=(5-m,-(3+m)). 知道△ABC是直角三角形 求m 我知道分三种情况 但是我自己做的和答案不一样答案我划横线的地方是否写错了?当 藏戏是我国的民族瑰宝,看到藏戏我会想到成语()、()、()、()等成语. 把一个表面涂色的正方体的每条棱平均分成10份,再切成同样大小的正方体.(1)共可以切成多少个小正方体?(2) 3面、2面、1面涂色的小正方体各有几个?6面都不涂色的正方体有多少个? 轴承上的数学和字母代表什么意思啊? 什么成语可以概括藏戏的特点? vertical fins是什么意思 in that 下图中花的名字叫什么? 在中造出两个成语,并选择一个造句(藏戏中的) fins是什么意思 非零向量a,b,c,p=a/a的模+b/b的模+c/c的模,那么p的模的取值范围为 马伊琍比文章大还是小,差几岁 陶渊明和周敦颐有什么不同和相同 珍惜童年的作文 在OMEGLE上聊天最常用的英语语句.我在OMEGLE上聊天遇到最大的问题就是词汇量太少,说几句话就不知道说什么了.谁能给我一些英语聊天常用的语句?还有英文的缩略词,比如:LOL ASL 等.谢谢 vertical什么意思,详细解释 杜甫的诗洋溢着爱国情怀,因此被称为什么? 人教版八年级全部古诗文上下册全部,暑假要背完,请全部写出来. 莲花比菊花高雅在哪里?(也就是说:周敦颐与陶渊明不同在哪里?) 春风送暖入 八年级人教版的重点文言文 若x为4象限角,则x^2sinx+y^2=sin2x 表示的曲线为 函数关于(a,0)对称和关于x=a对称有什么区别,有什么性质? 英文单词 最后是L的.意思好一点,像天使之类.最好短一点.只要3个、4个或者5个字母的。L在中间也可以的。麻烦带中文翻译。 若sin2x 中方严重关切美监听活动报道 要求美方46名中国与印度非法采金者在加纳被捕浙江实现县县电气化 镇村电气化比日痴情男等红灯偶遇女子生情愫 疯狂跟南非“刀锋战士”谋杀案再添非法持有弹76件日本国家重要文化财产下落不明 宠物可充当锻炼器材 带狗做瑜伽成欧美巴黎迪士尼出事故致5岁男童落水 已无《世界新闻报》窃听案8名被告中有3人日本政府将向救童中国留学生颁发感谢信数据显示日本近5年间借智能手机偷拍案《世界新闻报》窃听案8名被告中有3名波兰外长:乌克兰与欧盟结盟协议签署可纽约遭飓风袭击一周年 数千灾民仍无家德国380公斤女子出门就医 消防队出小猫将斗牛犬尾巴当做逗猫棒玩 网友直俄吁欧盟勿逼迫独联体国家在二者之间做突尼斯发生自杀式袭击 造成袭击者自身德国锁定美情报部门窃听站位置 位于使美国安局总监否认曾非法窃取谷歌和雅虎为躲避意大利繁冗昂贵程序 180对夫主场告别战!迪巴拉:感谢巴勒莫流传于高端人脉圈里的十句话纳乔:安帅应留下,训练方法没错购置税减半,对汽车金融公司将有哪些影2016江西银行校园招聘每日一练(1斯托克城vs利物浦首发:杰拉德出场你的身材反映出你的修养!2015年福建石狮农商银行招聘美工设乡村爱情席卷鲁能,杨旭大秀“事业线”李嘉诚这样请马云吃饭,不当首富才怪!高处不胜寒!教你逃顶八大招!皇马一个月前曾接触毕尔巴鄂主帅中国唯一破十亿美元的社交大数据公司布拉沃37场失19球破数项纪录2016巴黎时装周,优雅浪漫清风自来专访 | 昭仪翠屋创始人王云鹤:打造利物浦发布黑色第三客场球衣下周股市行情重大小道消息一览(10/人力资源管理的三把钥匙:打开的效能之队友抬魔兽告别,球迷阿布齐致敬2016江西农村信用社考试每日一练(
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘