免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yvonne@ma
打印 上一主题 下一主题

[C] 如果字符串后有换行符\n,C语言程序中怎么去掉? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-03-07 18:20 |只看该作者
考虑要全面,难保中间没\n的 ^_^


原帖由 cugb_cat 于 2007-3-6 20:07 发表

楼主说的是字符串后有'\n'啊~

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
32 [报告]
发表于 2007-03-07 21:51 |只看该作者
原帖由 yvonne@ma 于 2007-3-6 11:54 发表
如果字符串后有换行符\n,C语言程序中怎么去掉?



唉!



  1. char     s[]="abcdefghijklmnopqrstuvwxyz\n";
  2. s[strlen(s)]='\0';

复制代码

论坛徽章:
0
33 [报告]
发表于 2007-03-08 14:46 |只看该作者

应该是\r\n的问题

在unix下. "\n"只是\n,只有一个字符; 好像在windows下就变成"\r\n"了.并且是两个字符.

论坛徽章:
0
34 [报告]
发表于 2007-03-09 13:03 |只看该作者
难道不知道c中字符串是以'\0‘作为结束符的么,不管buf[strlen(buf)-1]中放的就是'\0',而绝不可能是'\n'的。
buf[strlen(buf)-2]中如果不是'\n',则不需处理,如果是,则替换成'\0'。

至于楼主说 strncpy(buf2,buf1,strlen(buf1)-2);不对,可能是因为没有将buf2初始话,memset(buf2,0x00,sizeof(buf2));再做就该可以了。

论坛徽章:
0
35 [报告]
发表于 2008-11-23 15:55 |只看该作者
  1. #include <stdio.h>
  2. #include <string.h>
  3. main(){
  4. FILE *fp,*fp1;
  5. char str[70];
  6. char *p,*pp;
  7. p=(char*)malloc(70);
  8. memset(&p,0x0,sizeof(p));
  9. fp=fopen("aa","r+");
  10. fp1=fopen("bb","w+");
  11. while(!feof(fp))
  12. {
  13. fgets(str,70,fp);
  14. for(p=str;(*p)!='\n';p++){
  15. if((*p)=='=')
  16. pp=p;
  17. }
  18. str[strlen(str)-1]='\0';
  19. pp++;
  20. fputs(pp,fp1);
  21. printf("pp=%s len=%d",pp,strlen(pp));
  22. }
  23. }
复制代码

[ 本帖最后由 halen 于 2008-11-23 16:13 编辑 ]

论坛徽章:
0
36 [报告]
发表于 2008-11-23 16:12 |只看该作者
其实很简单,如果你的字符串是12345后面有\n,那么strlen=6,那么str(6) = '\n'明显不行,所以 str[strlen(str)-1]='\n'

论坛徽章:
0
37 [报告]
发表于 2008-11-23 16:17 |只看该作者
当然,如果在windows下面的文件到linux下面来处理,那就是另外的处理方法了,其实LZ没说明白

论坛徽章:
0
38 [报告]
发表于 2008-11-23 16:18 |只看该作者
我的代码编译通过,运行时出错!

论坛徽章:
0
39 [报告]
发表于 2008-11-23 16:23 |只看该作者
根据条件测if(str[strlen(str)-1=='\n')
的确是'\n'
但只要加这行str[strlen(str)-1]='\0';
就出错

论坛徽章:
0
40 [报告]
发表于 2008-11-23 16:50 |只看该作者
fp=fopen("aa","r+");
char str[70],cpstr[70];
fgets(str,fp);
对str缓冲区有保护
不能直接写
strcpy(cpstr,str);
cpstr[strlen(cpstr)-1]='\0';
正常了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP