请不要测试直接回答 echo "a" > a.txt 该文件大小多少字节?

2017-06-22 12:29:31 +08:00
 nikoo
感觉有点意外,两个问题:
1、这是为什么?
2、这合理吗?
6689 次点击
所在节点    问与答
75 条回复
phoebuss
2017-06-23 05:37:02 +08:00
应该用 echo -n
fovecifer
2017-06-23 09:54:11 +08:00
请用 echo -n
yuchting
2017-06-23 11:15:35 +08:00
楼上 sizeof 跑题的那位,这个运算符和编译器(预处理器)有很大关系,有些编译器说不定给出警告甚至错误,在使用 C 和 C++的时候,尽量少使用 sizeof,多用宏直接写死,不写 C++6 年的大叔的忠告。
intsilence
2017-06-23 11:29:48 +08:00
用 echo -n 或者 printf 就好咯。
ldbC5uTBj11yaeh5
2017-06-23 11:40:28 +08:00
@yuchting 蛤蛤,被套路了以后,这转进真奇葩。。。
ldbC5uTBj11yaeh5
2017-06-23 11:42:34 +08:00
这道题是我数年前的原创,专门收拾这些嘴硬的自认为“熟悉 C/C++”的程序员。
SoloCompany
2017-06-23 12:19:12 +08:00
man 一下就有结果的问题就不要意外了,多一个回车这种问题早就应该发现了,否则在一个 shell 里面连续的 echo 语句就会变成一团东西

更大的坑应该是 echo -n 并不是总是有效,你 man 一下 BSD 的 echo 指令( MacOS )的说明,内置的 echo 命令是不支持 -n 的

这个命令 sh -c ‘ echo -n a ’ 在 MacOS 下执行是输出 -n a 而不是 a

所以最保险的方法还是应该使用 printf
NoAnyLove
2017-07-02 02:28:53 +08:00
@jigloo 请教一下,关于#19 楼的问题,#22 楼的说法是“ c 如此设计的原因和 fgetc 为什么返回值是 int 相同”。我查了一下,fgetc 的返回值是 int 的原因是为了区分返回值可能是-1 的情况,所以要将 char 升级到 int。但是为啥 C 语言中,sizeof 的情况下也要将其升级为 int 呢?
panda1001
2017-07-02 08:02:49 +08:00
不指定操作平台和编译器
owt5008137
2017-07-02 16:39:08 +08:00
@NoAnyLove ch 爱人也能表示-1。 @jigloo 不过同样请教下 fgetc 和推断类型为 int 的原因。难道是因为没有重载而且要能表示 wchar_t ?
NoAnyLove
2017-07-03 07:28:32 +08:00
@owt5008137 “ ch 爱人也能表示-1 ”?这是啥意思?是不是哪个字打错了?
owt5008137
2017-07-03 08:28:09 +08:00
@NoAnyLove 打错了,char 也能表示-1。(T_T)
NoAnyLove
2017-07-03 10:56:42 +08:00
@owt5008137 那你怎么区分 EOF 和读取了 255 个字节的长度?
owt5008137
2017-07-03 20:15:29 +08:00
@NoAnyLove 啊。我和你说的不是同一个层面的意思。我说的能表示是说 char 类型可以赋值-1。如果说是范围问题,那确实是不能表示
NoAnyLove
2017-07-03 23:21:22 +08:00
@owt5008137。。。。。。。我在#68 楼说的就是“为了区分返回值可能是-1 的情况” (破涕为笑)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX