C/C++的一些杂项

本文探讨了C/C++编程中的几个关键细节,包括fwrite和fread函数的参数问题,C++11的编译选项,以及strspn和strcspn字符串处理函数的用法。同时讲解了跨编译器智能指针头文件的包含,getopt和getsubopt命令行解析函数的使用,以及typedef类型和数组的数组的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fwrite 和 fread的参数问题

        有时,我们在阅读别人的代码时会看到这样的写法:

    fwrite(buff, 1, 8912, fout);
    fread(buff, 1, 8912, fin);
我就觉得奇怪,为什么不写成:

    fwrite(buff, 8912, 1, fout);
    fread(buff, 8912, 1, fin);

        感觉第二种写法会有效率一点。因为其一次就写完,而第一种需要写多次,每次只写一个字节。后来看多代码了,发现很多人都这样写的。我就觉得里面肯定有文章。用谷歌一搜,就发现已经有老外问到这个问题了。http://stackoverflow.com/questions/19410230/fread-fwrite-size-and-count 和 http://stackoverflow.com/questions/10564562/fwrite-effect-of-size-and-count-on-performance

       从回答中可以看到,第一种写完更合理一点。首先,实现fwrite和fread函数的人不是傻蛋,其不会实现为:每次只写一个字节,写8912次 。最重要的是,在第一种写法中可以知道写了/读了多少字节。特别是在读的时候,很有必要。如果是第二种写法,在读的时候,只能返回0或者1,根本就不知道究竟读了多少字节。



C++11的编译选项

        C++11越来越流行了,有必要学一下C++11。这里这里可以看到各个编译器对C++11的支持。安装了支持C++11的编译器gcc,还要加上编译选项-std=c++11。编译命令如下:

g++ -std=c++11 test.cpp -o test

        如果想在Windows下使用支持C++11的Mingw,可以到这里下载。

        对于Qt Creator,这个编译选项是在.pro文件添加的,添加下面内容即可:

QMAKE_CXXFLAGS += -std=c++11



strspn和s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值