八达网

标题: c码农进 [打印本页]

作者: MakubeX    时间: 2013-12-19 16:10
标题: c码农进
有个char是读文件读回来的,比如说是a\nb,print这个char就是a\nb
我想变成
a
b
这样,怎么弄?
作者: rolin    时间: 2013-12-19 16:13
你读的是\\n
作者: MakubeX    时间: 2013-12-19 16:16
没,读回来的就是a\nb那样,直接输出也是a\nb,没有给我把\n转成换行符
作者: rolin    时间: 2013-12-19 16:22
那就是\\n啊 哥哥 你要做的就是替换而已
作者: MakubeX    时间: 2013-12-19 16:31
不行啊,说详细点好了
我用fgets读一个文件,文件就只有一行a\nb,然后把这一行存到一个char里面,然后printf那个char就会出现a\nb,改成a\\nb就是a\\nb,总之转意符完全无效了,我期望的是出现
a
b
怎么弄?
作者: Neutrino    时间: 2013-12-19 16:33
什么意思,直接打开文件里看见的就是a\nb ?

作者: MakubeX    时间: 2013-12-19 16:35
Neutrino 发表于 2013-12-19 16:33
什么意思,直接打开文件里看见的就是a\nb ?

对,但我想输出时变成
a
b
作者: rolin    时间: 2013-12-19 16:42
a\nb 是3个字符  ascii码的情况下占3个字节
你读的是4个字符a \ n b
这么说能理解吧
有些io系统会自动把字符\n转成回车
但c的不会
作者: MakubeX    时间: 2013-12-19 16:46
rolin 发表于 2013-12-19 16:42
a\nb 是3个字符  ascii码的情况下占3个字节
你读的是4个字符a \ n b
这么说能理解吧

那么要怎么弄才能把那个该死的换行符弄出来?直接赋值打印出来倒是可以...
作者: Neutrino    时间: 2013-12-19 16:47
MakubeX 发表于 2013-12-19 16:35
对,但我想输出时变成
a
b

那你自己判断替换啊。
你在文件里看到什么那就是什么,还指望fgets一边读一边帮你替换?
作者: MakubeX    时间: 2013-12-19 16:50
Neutrino 发表于 2013-12-19 16:47
那你自己判断替换啊。
你在文件里看到什么那就是什么,还指望fgets一边读一边帮你替换?

没有一个函数可以直接把字符串里的转意符全部处理掉么?
作者: ak4748520    时间: 2013-12-19 17:01

作者: Neutrino    时间: 2013-12-19 17:01
MakubeX 发表于 2013-12-19 16:50
没有一个函数可以直接把字符串里的转意符全部处理掉么?

你从文件里读过来的不是转义字符,就是实际字符,这个上面已经说清楚了。
你是想把文件里的\n 这个字符串,全部替换成 换行符。
C库没字符串替换函数,字符串查找函数是:size_t  strcspn(const char *s1, const char *s2)


作者: MakubeX    时间: 2013-12-19 17:05
Neutrino 发表于 2013-12-19 17:01
你从文件里读过来的不是转义字符,就是实际字符,这个上面已经说清楚了。
你是想把文件里的\n 这个字符串 ...

真你妈麻烦...我还是回去玩python算了
作者: rolin    时间: 2013-12-19 17:08
MakubeX 发表于 2013-12-19 17:05
真你妈麻烦...我还是回去玩python算了

学c就是要享受重复造轮子的快感
想想用了几年之后一堆自主产权的libs多有成就感
作者: MakubeX    时间: 2013-12-19 17:42
Neutrino 发表于 2013-12-19 17:01
你从文件里读过来的不是转义字符,就是实际字符,这个上面已经说清楚了。
你是想把文件里的\n 这个字符串 ...

找出来然后换成什么?已经是\n怎么换成换行符?
作者: 我不是大米    时间: 2013-12-19 17:47
rolin高呼熊大威武,立刻股票大赚得到3 水晶.      



伪熊密你暴露了
作者: rolin    时间: 2013-12-19 18:43
我不是大米 发表于 2013-12-19 17:47
rolin高呼熊大威武,立刻股票大赚得到3 水晶.      

地主明鉴  真心熊密无疑
作者: rolin    时间: 2013-12-19 18:46
MakubeX 发表于 2013-12-19 17:42
找出来然后换成什么?已经是\n怎么换成换行符?


。。。 我以为你都明白了 你看到的\n是两个字符 他不是回车  你要把这两个字符换成一个回车  或者windows上\直接 换成\r也行

小写了一段  没有测试 codepad 上没法读外部文件

  1. #include <stdio.h>
  2. int main(int argc,  char  *argv)
  3. {
  4.         char str1[50], str2[50];
  5.         FILE *fp = fopen(filename, "r");
  6.         fgets(str1, 50, fp);
  7.         int i = 0,  j=0;
  8.         while(str1[i] != '\0')
  9.         {
  10.                 if (str1[i] != '\\' &&  str1[i+1] != 'n')
  11.                         str2[j++] = str1[i];
  12.                 else
  13.                         str2[j++] = '\n', i++;
  14.                 i++;
  15.         }
  16.         str2[j] = '\0';
  17.         printf(str2);
  18.         return 0;
  19. }

复制代码

作者: 刁总书记    时间: 2013-12-19 19:33
换成'\r'
作者: 477_    时间: 2013-12-19 23:26
看着觉得马龙好屌啊

一股仰慕的感觉
作者: 国妓米兰    时间: 2013-12-20 00:46

看着觉得马龙好屌啊

一股仰慕的感觉
作者: 羊羊羊    时间: 2013-12-20 02:09
rolin高呼熊大威武,立刻股票大赚得到3 水晶.
作者: MakubeX    时间: 2013-12-20 10:21
rolin 发表于 2013-12-19 18:46
。。。 我以为你都明白了 你看到的\n是两个字符 他不是回车  你要把这两个字符换成一个回车  或者windo ...

测了下还真有点小问题...不过这下完全懂了,剩下的我自己弄,谢啦
作者: Neutrino    时间: 2013-12-20 10:37
rolin 发表于 2013-12-19 18:46
。。。 我以为你都明白了 你看到的\n是两个字符 他不是回车  你要把这两个字符换成一个回车  或者windo ...

main 函数都写错了....
作者: tangsa    时间: 2013-12-20 11:58
楼主的需求就是将文本文件里面的\n这两个字符变成程序里面\n 这一个换行符。。
作者: Mr.Red    时间: 2013-12-20 12:12
看着觉得马龙好屌啊

一股仰慕的感觉
作者: 刁总书记    时间: 2013-12-20 12:32
看着觉得马龙好屌啊

一股仰慕的感觉




欢迎光临 八达网 (https://www.8-da.com/) Powered by Discuz! X2.5