关于OpenFileName中lpstrFilter的问题 OpenFileName中的lpstrFilter是过滤器,应该如"Text\0*.txt\0"的格式但是现在的字串符"Text"是保存在argv[1],"*.txt"是保存在argv[2]中,如何把这两个合并成argv[1]+"\0"+argv[2]+"\0"? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MFC吗?CString str;str.Format("%s\\0%s\\0",argv[1],argv[2]);非MFCchar szText[256];sprintf(szText,"%s\\0%s\\0",argv[1],argv[2]); 感谢LS的回答,但是问题没有解决我的意思是要OFN.lpstrFilter="Text\0*.txt\0"这样,后面不能有多余的字符(char szText[256]有多余的字符,会出现问题) 还是不行,我把代码贴出来,大家看看是哪里有问题char fliter[256];ZeroMemory(&ofn,sizeof(OPENFILENAME));szFile[0]='\0';ofn.lStructSize=sizeof(OPENFILENAME);ofn.lpstrFile=szFile;ofn.nMaxFile=MAX_PATH;ofn.Flags=OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;sprintf(fliter,"%s\0%s\0",argv[1],argv[2]);fliter[strlen(fliter)]='\0';ofn.lpstrFilter=fliter;GetSaveFileName(&ofn);printf("%s\n",ofn.lpstrFile); sprintf(fliter,"%s\\0%s\\0",argv[1],argv[2]); 不行啊,lpstrFliter的格式是:argv[1]+NULL字符(我用\0)+argv[2]+NULL字符但是如果用\\0的话就不是NULL字符了,该怎么办? argv[1]+NULL字符(我用\0)+argv[2]+NULL字符 ==NULL字符时什么东西?ASCII码为0的字符串终止字符么?你的sprintf(fliter,"%s\0%s\0",argv[1],argv[2]);有什么问题? 有问题,sprintf(fliter,"%s\0%s\0",argv[1],argv[2]);之后fliter就从第一个\0处断掉了 sprintf(fliter,"%s%c%s%c",argv[1],'\0',argv[2],'\0'); 那是当然了,fliter如果当字符串用,肯定会截掉啊。因为\0是字符串终止符啊。 只有当作为二进制数据用时才不会这样。当成字符串时肯定是这种结果。========OpenFileName中的lpstrFilter是过滤器,应该如"Text\0*.txt\0"的格式 ==你这个规则是从哪里看到的呢?为什么是“应该”? 应为我写OFN.lpstrFliter="Text\0*.txt\0"才是正确的啊 过滤的串应该是Text|*.txt|这样子吧。 char szText[256];memset(szText, 0, sizeof(char) * 256);sprintf(szText,"%s\0%s\0",argv[1],argv[2]); //这此注意,如果是最后一个过滤器,需要以\0\0结尾! szText需要初始化,没初始化导致不全部都是0, 而filter是以连续两个结尾的。 关于createThread()函数的第四个参数的传参问题 查找窗体句柄? 在一个程序里对同一个端口进行组播自发自收,为什么接收的包总数只是发送的包总数的一半多? 怎样让鼠标经过按钮时变成小手的形状...??? 如何获知dll文件的版本号,谢谢。 installshield 8.0 中遇到的问题 请问如何编程实现远程播放ppt文件,客户要同步。 如何使CListCtrl的所有列均可编辑 win7 当windows检测到通信活动时 寻个4年前用mfc写棋牌的一个牛 一个指针参数传进线程处理遇到的问题. ADOX连接出现问题
CString str;
str.Format("%s\\0%s\\0",argv[1],argv[2]);
非MFC
char szText[256];
sprintf(szText,"%s\\0%s\\0",argv[1],argv[2]);
char fliter[256];
ZeroMemory(&ofn,sizeof(OPENFILENAME));
szFile[0]='\0';
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.lpstrFile=szFile;
ofn.nMaxFile=MAX_PATH;
ofn.Flags=OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
sprintf(fliter,"%s\0%s\0",argv[1],argv[2]);
fliter[strlen(fliter)]='\0';
ofn.lpstrFilter=fliter;
GetSaveFileName(&ofn);
printf("%s\n",ofn.lpstrFile);
==NULL字符时什么东西?ASCII码为0的字符串终止字符么?
你的sprintf(fliter,"%s\0%s\0",argv[1],argv[2]);
有什么问题?
========
OpenFileName中的lpstrFilter是过滤器,应该如"Text\0*.txt\0"的格式
==你这个规则是从哪里看到的呢?为什么是“应该”?
memset(szText, 0, sizeof(char) * 256);
sprintf(szText,"%s\0%s\0",argv[1],argv[2]); //这此注意,如果是最后一个过滤器,需要以\0\0结尾!