在yolo中pdb出现了字符串“name\r”,错误,于是想到去掉字符串中的最后一个字符
#include "stdio.h"
#include "malloc.h"
#include "string.h"
int main()
{
char* s="GoldenGlobalView\r";
char * d= (char *)malloc((strlen(s)-1)*sizeof(char));
memcpy(d,s,(strlen(s)-1));
printf("%s",d);
free(d);
return 0;
}
也可以使用strncpy(dest,src,n),不过貌似memcpy最好。
太麻烦,不过没办法。
在darknet框架src/data.c中
可以重写
char **get_labels(char *filename)
{
char * filename_no_r= (char *)malloc((strlen(filename)-1)*sizeof(char));
memcpy(filename_no_r,s,(strlen(filename)-1));
list *plist = get_paths(filename_no_r);
free(filename_no_r);
char **labels = (char **)list_to_array(plist);
free_list(plist);
return labels;
}不过最好的解决方案还是使用notepad更改数据格式改为unix。具体参见yolo栏目。
版权声明:本文为andeyeluguo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。