sprintf()切割字符串的一部分

时间:2019-05-20 08:00:14

标签: c visual-studio

我有一批要尝试连续访问的图像。 我已经给出了开始的第一张图片的路径(所有图片都在同一个文件夹中,并且除了最后一个数字ex:reg_img32,reg_img33之外几乎都具有相同的名称),并使用for循环遍历它们,其中索引代表最后一个号码。 然后,我尝试加载图像并用imshow打印它们,但出现错误

  

OpenCV错误:声明失败(大小。宽度> 0 &&大小。高度> 0)

之所以出现,是因为我的变量(先生)只记住了最后7个字符,并且数字也减了一个。

char sir[100]="";
///the images start from 32 up to 56
for(int i=32; i<= 56; i++)
{
sprintf(sir, "D:/UTCN/AN 3/SEM2/projectPI/sample_micro/sub01/EP04_03/reg_img%d.jpg", i);
Mat indexFace = imread(sir, CV_LOAD_IMAGE_COLOR);
}

通过调试,apper认为sir仅保留“ mg31.jpg”而不是整个字符串,并且即使索引从32开始也减1。 。

https://imgur.com/a/IvDcS1T 为什么会这样?

我不得不提到,上周代码可以正常工作,并且sprintf输出是正确的形式(我在编写时已检查),并且没有对代码的这一部分或影响路径的任何部分进行任何更改变量。

0 个答案:

没有答案