typedef struct Box{ char *REF_OR_SYS; int num,x,y,w,h,o;}Box;sscanf(str,"%s %d %d %d %d %d %d",&label,&refNum,&x,&y,&w,&h,&o);Box detect = {label,refNum,o};printf("\nLABEL IS %s\n",detect.REF_OR_SYS); //Prints out the String correctly //(Either the word REF or SYS)return detect;
当这个结构传递给另一个结构时,所有内容都显示在字符串的EXCEPT之外.
voID printBox(Box detect){printf("Type: %s Ref: %d X: %d Y: %d W: %d H: %d O:%d\n",detect.REF_OR_SYS,detect.num,detect.x,detect.y,detect.w,detect.h,detect.o);
}
我错过了一些简单的事吗? REF_OR_SYS总是打印出?? _?
解决方法 使用strdup()(通常可用,如果不使用malloc())通过sscanf()将读取的字符串复制到标签中:detect.REF_OR_SYS = strdup(label);
当该函数返回标签超出范围时,REF_OR_SYS将是一个悬空指针.记得在不再需要时释放()它.
总结以上是内存溢出为你收集整理的不在C中从struct打印字符串全部内容,希望文章能够帮你解决不在C中从struct打印字符串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)