簡體   English   中英

如何在 C 編程中的 OPENFILENAME 參數中添加 strcat

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM