对码当歌,猿生几何?

c语言-字符串去掉最后一个字符

在yolo中pdb出现了字符串“name ”,错误,于是想到去掉字符串中的最后一个字符

#include "stdio.h"
#include "malloc.h"
#include "string.h"
int main()
{
    char* s="GoldenGlobalView
";
    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栏目。

阅读更多