[英]how to strcat in OPENFILENAME paramaeters in C programming
我有一個使用 OPENFILENAME 的工作代碼。 我可以知道如何使用 strcat 來動態控制它的參數嗎
這個正在工作
//ofn.lpstrFilter = "Rule Files (*.net and *.rul)\0*.rul;*.net\0";
char filter[100];
char filterText[100];
char filterVal[100];
strcpy(filterText, "Rule Files (*.net and *.rul)");
strcpy(filterVal, "*.rul;*.net");
我嘗試先使用 strcat 和 '\0' 但它只顯示這樣strcat (filter, filterText);
strcat (filter,"\0");
strcat (filter,filterVal);
strcat (filter,"\0");
ofn.lpstrFilter = filter; \\missing \0
我嘗試使用 '\\0'
strcat (filter, filterText);
strcat (filter,"\\0");
strcat (filter,filterVal);
strcat (filter,"\\0");
ofn.lpstrFilter = filter; \\now includes the\0
但是當我運行程序時,對話框過濾器顯示如下
"規則文件 (*.net 和 *.rul)\0*.rul;*.net\0";
謝謝
使用"\\0"
不會做任何有用的事情,當你想要一個空字節時,它只會將兩個字符\0
放在你的字符串中。 但是,C 中的字符串以'\0'
結尾,因此如果沒有一點指針運算,就不能使用strcat
構造一個以 nul 分隔的字符串。
所以,鑒於這些:
char filterText[] = "Rule Files (*.net and *.rul)";
char filterVal[] = "*.rul;*.net";
char filter[100];
你需要做這樣的事情:
/*
* The first one is a straight copy.
*/
strcpy(filter, filterText);
/*
* Here we need to offset into filter to right after the
* nul byte from the first copy.
*/
strcpy(&filter[strlen(filterText) + 1], filterVal);
更好的方法是使用malloc
分配您的filter
,這樣您就不必擔心緩沖區溢出:
char *filter = malloc(strlen(filterText) + 1 + strlen(filterVal) + 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.