在写c语言时,printf和scanf是我们必不可少且常用的关键字,相信大多数人对它们俩的认识只是停留在表面上,并没有深入了解过它们吧,那么这一篇文就来深入对它们俩来说道说道PrintfPrintf:输出函数,将参数输出到屏幕上案例:intmain(){ printf("hello\nworld\n"); return0;}printf("hello\nworld\n"):将helloword打印到屏幕上,在使用printf函数时可以多次使用换行符\n,想在哪里加都可以占位符占位符:在printf中,占位符可以被指定的数值替换案例:intmain(){ printf("thereare3app
我想从constchar*文件路径中提取一个constchar*文件名。我尝试使用正则表达式但失败了:constchar*currentLoadedFile="D:\files\file.lua";charfileName[256];if(sscanf(currentLoadedFile,"%*[^\\]\\%[^.].lua",fileName)){return(constchar*)fileName;//WILLRETURN"D:\files\file!!}问题是将返回“D:\files\file”而不是想要的"file"(注意:没有“.lua”) 最佳
我有一个字符串,其中包含来自文件的数据,这里是示例stringstr="File:./img/Char2.png\r\nSize:128x128\r\nFrames:2\r\nHand:79x54\r\nHorizontal_Animated:0"我希望使用这个字符串来初始化变量,但是遇到了一个问题:我想使用sscanf(str.c_str(),"%*sSize:%dx%d",&Width,&Height)解析这个字符串并且它有效,但有一件事我不喜欢:对于第二次,第三次....sscanf的调用我需要再添加一个%*s因为这个东西不会忽略\r\n,所以下一段代码如下所示:sscanf(c
我在两个不同版本的编译器中有不同的scanf函数行为。intnumber;intoffset=0;constchar*ref="123456";sscanf(ref,"%d%n",&number,&offset);我不明白为什么VisualStudio2013版本12.0偏移量==4和VisualStudio2017版本15.9偏移量==6。这是旧版本的错误吗?当我删除空格时,两个版本都显示正确的数字:sscanf(ref,"%d%n",&number,&offset);%d%n与%d%n有何不同? 最佳答案 How%d%nisdi
我想使用sscanf创建一个简单的“日期”读取,它接受以下输入:"dd/mm/yyyy"“dd”和“mm”字段都可以是2位长(例如0、6或11,但不能是123)。“年”字段可以是0或四位数字字段。这三个字段中的任何一个值为0都意味着必须取而代之的是系统的日、月或年。该格式必须严格,因此,如果输入的格式不符合模式,则必须通知用户。我的尝试是:intd,m,y;charconst*input="23/7/1990";intn=sscanf(input,"%2u/%2u/%4u",&d,&m,&y);if(n!=3)throwInvalidDate("Invalidformat");//Fi
如何在没有这个错误的情况下扫描int8_t和其他类型。我使用“cinttypes”来获取模式常量,但这没有帮助。#include#include#includeintmain(){int8_tvar;scanf("%"SCNi8,&var);printf("%"PRIi8"\n",var);return0;}附言此错误仅在Debug中出现,在Release中构建时就可以了。附言输出是:1>------Buildstarted:Project:SCANF_PROBLEM,Configuration:DebugWin32------1>SCANF_PROBLEM.cpp1>d:\study
#include#include#includeintmain(){char*array[3];scanf("%s",----);//Theinputisjames.return0;}我该如何将詹姆斯存储在数组[1]以詹姆斯作为输入为等同于array[1]="james";?因此,问题是我必须将几个字符串作为输入,然后我想将其存储在数组中,以便像我一样存储它array[1]="James";如果可能的话,请提供代码。看答案您可能想要类似的东西:#include#include#includeintmain(){chararray[3][10];//arrayof3stringsofatmost
在下面的代码片段中,fscanf()总是返回0,而不是-1(EOF)。结果,while循环永远不会退出。知道为什么吗?while((n_items_read=fscanf(ifd,"%la,%la,%la\n",&x,&y,&z))!=EOF){...}完整代码如下:voidparse_test_file(constchar*filename){doublex,y,z;intn_items_read,n_lines_read;FILE*ifd=fopen(filename,"r");if(NULL==ifd){fprintf(stderr,"Failedtoopen%sforreadi
我正在为学校编写C++代码,其中我只能使用std库,所以没有提升。我需要解析像“14:30”这样的字符串并将其解析为:unsignedcharhour;unsignedcharmin;我们将字符串作为C++字符串获取,因此没有直接指针。我尝试了这段代码的所有变体:sscanf(hour.c_str(),"%hhd[:]%hhd",&hours,&mins);但我总是得到错误的数据。我做错了什么。 最佳答案 正如其他人所提到的,您必须使用指定的%d格式(或%u)。至于替代方法,我不太喜欢“因为C++具有XX特性,所以必须使用它”,并且
我有一个输入字符串“0100”为什么scanf("%i",&n);返回64而cin>>n;给我100?为什么cin以十进制值思考,而scanf以八进制值思考? 最佳答案 Fortheispecifier: Anynumberofdigits,optionallyprecededbyasign(+or-).Decimaldigitsassumedbydefault(0-9),buta0prefixintroducesoctaldigits(0-7),and0xintroduceshexadecimaldigits(0-f).-sca