草庐IT

c++ - 如何在 C++ 代码中将我的 printf 语句限制为每行 80 个字符?

我的教授要求我的代码每行不超过80个字符,但我有一些printf语句超过了这个限制。有没有办法在不更改输出的情况下将此语句分成两行或更多行?请求示例:printf("\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d\n","1-Ones",ones,"2-Twos",twos,"3-Threes",threes,"4-Fours",fours,"5-Fives",f

C++ 为什么在与 void 指针一起使用时 sprintf_s 格式会发生变化?

这是工作的原始代码://...unsigned__int64num=57;sprintf_s(buffer,sizeof(buffer),"%llu",num);但是,当我尝试将这部分提取到此函数中时:voidaddBuffered(void**attributeValue,char*format){sprintf_s(buffer,sizeof(buffer),format,*attributeValue);}通过调用:addBuffered((void**)&num,"%d");我必须将sprintf_s中的格式参数从%llu更改为%d以获得正确的值。有人可以解释为什么会发生这种情

c++ - 使用C在文本中搜索一个词,并显示该词后的信息

假设我有一个这样的文本文件:用户:约翰设备:12345日期:2012年12月12日编辑:我有我的代码可以成功搜索一个词,并显示该词之后的信息。但是,当我尝试编辑代码以搜索2或3个词并在它们之后显示信息而不是仅显示1个词时,我无法让它工作。我曾尝试将代码添加到同一个while循环中,并为另一个词创建一个新的while循环,但两者都不起作用。一定有什么地方我做错了/没做。请指教,谢谢!这是我的代码:#include#include#includeintmain(){charfile[100];charc[100];printf("Enterfilenameanddirectory:");s

c++ - 使用 WSAAddressToString 时的问题

问题:我正在尝试使用WSAAddressToString函数来获取计算机的ip地址。我浏览了他们网站上的msdn文档,其中有太多结构中的结构,我觉得那是我出错的地方。pastebinlinkhere中提供了代码.请让我知道我到底哪里出错了。解答:在代码中包含WSAStartup函数并对现有代码进行一些修改后,该问题已得到解决。完整代码在pastebin中,修改部分如下。retval=WSAStartup(MAKEWORD(2,2),&wsaData);if(retval!=0){printf("WSAStartup()failedwitherrorcode%d\n",WSAGetLas

c++ - 无法通过 infiniband 连接到服务器

我正在尝试用C++制作一个小型服务器,它可以简单地回显它通过无限带宽连接接收到的任何内容。我还在Ubuntu下使用套接字直接协议(protocol)和POSIX套接字。不幸的是,我在互联网上找到的唯一建议是关于我应该如何使用AF_INET_SDP域创建套接字,就像这里一样:#defineAF_INET_SDP27intsocketfd=socket(AF_INET_SDP,SOCK_STREAM,0);我设法绑定(bind)套接字,我调用了listen(...)函数,但服务器在尝试接受连接时挂起,而在客户端,我仅在尝试连接时收到超时。我还有一个用Java编写的较旧的类似应用程序(客户端

c++ - 这是编译器编译的顺序

好吧,我想知道编译器“读取”代码的顺序是什么。例如:假设我有以下代码片段:intN,M;N=M=0;在这种情况下,编译器会为N和M分离一部分内存(int,4字节),然后在第二行(我怀疑的地方)有两件事,一个:编译器“读取”N等于M并且都等于零。或编译器“读”出零,放到M的内存中,然后得到M的值,也就是零,放到N的内存中。也就是说,是从右到左,还是从左到右?我不知道我的疑问是否清楚,但在我做的测试中:inti=0;/*Ideclaredthevariablei,andassignzerovaluetoit*/printf("%d",i++);/*Prints0*/printf("%d",

c++ - 为什么在 C++ 中使用 <cstdio> 而不是 <stdio.h> 时 "std::printf"和 "printf"都会编译?

这个问题在这里已经有了答案:WhenusingCheadersinC++,shouldweusefunctionsfromstd::ortheglobalnamespace?(8个答案)关闭5年前。据我所知,cxyz格式的header与xyz.h相同,唯一的区别是cxyz将所有命名空间std下的xyz.h的内容。为什么以下程序在GCC4.9和clang6.0上都能编译?#includeintmain(){printf("Testing...");return0;}和第二个程序:#includeintmain(){std::printf("Testing...");return0;}FI

c++ - 我可以使用 printf() 打印类的对象吗?

我有这样的代码:classPoint{public:intx,y;Point():x(1),y(1){}}我可以使用printf()打印该类的对象吗?:intmain(){Pointpoint;printf("%o",point);return0;}或者我必须重载operator并使用std::cout:std::ostream&operator 最佳答案 CanIprintobjectofthatclassusingprintf()?没有。printf在这个意义上是不可扩展的。最好的选择是重载operator在std::ostre

c++ - printf int 到带有左填充空格的 char 数组

我有一点脑死亡的时刻。我必须将int的字符串表示形式存储到char[]中,但ascii表示形式必须用空格填充。snprintf将完成这项工作。chardata[6];intmsg_len=10;std::snprintf(data,6,"%*d",5,msg_len);//"10"我只是想知道是否有更优雅的方法来做到这一点。我可以访问C++11还有一点问题,我认为snprintf也会添加一个终止符,我必须避免这种情况。我可以有一个中间缓冲区并将其复制到我的数据中,但这会增加额外的复杂性。我需要就地进行,因为这些数据结构是我必须发送到接受这种格式输入的服务器的消息的一部分。消息看起来像:

c++ - 从 Visual Studio 2013 迁移到 Visual Studio 2015 后,调用 printf 样式的函数会导致警告

我有一个调用fprintf的程序。在VisualStudio2013中,编译和执行的所有内容都没有错误和警告。现在该项目已迁移到VisualStudio2015(没有任何更改),我在大多数fprintf调用中收到以下警告:C4474:toomanyargumentspassedforformatstring大多数警告都指向以下代码行:fprintf(stderr,"Missingheaderfilename.Formantis:\n",pArg);我该如何解决这个问题?我是否需要重写我的代码,或者我的项目设置是否有问题导致这些警告?我看到了,在thisMSDN文章对这些函数进行了更改: