h,我是学生和学习C编程,通过lab-windows CVI ..在GUI中我创建了文本框和列表框...我从文件到文本框和用户读取,搜索一个单词。 ..当它匹配时,它应该出现在列表框中的单词...我使用了一个字符单词(首先作为指针或数组)但是使用了一个关键字将单词放在列表框中,但是我得到错误:它指向char并期望char。我把它变成了简单的角色,但它抱怨它很小,即使我分配了...我希望你能解决我的问题..欣赏...`int i = 0,textLength; char str [80],word1 [25],word2;
static FILE *ifp;
switch (event)
{
case EVENT_COMMIT:
ifp = fopen ("text.txt", "r");
while((fgets(str,80,ifp))!=NULL) {
SetCtrlVal (panelHandle, PANEL_TEXTBOX, str);
SetCtrlVal (panelHandle, PANEL_TEXTBOX, "\n");
++i;
}
rewind(ifp);
GetCtrlAttribute (panelHandle, PANEL_STRING, ATTR_STRING_TEXT_LENGTH, &textLength);
word2 = (char) malloc (sizeof(char) * (textLength + 1));
GetCtrlVal (panelHandle, PANEL_STRING, &word2); //argument too small using usual char
while((fscanf(ifp,"%s",word1))!=EOF){
if(strcmp(word1,&word2)==0){
SetCtrlVal(panelHandle, PANEL_LISTBOX, word2); //get error, it is pointed to char and expect char (when *word2 or word[25]) ?!!
if ((panel2 = LoadPanel (0, "ex1.1.1.uir", PANEL_2)) < 0)
return -1;
DisplayPanel (panel2);
SetCtrlVal(panel2,PANEL_2_TEXTMSG,"match found");
}
}
break;`
你将malloc
的返回类型转换为char
而不是char*
(指向char的指针)。输入word2 = (char*) malloc (sizeof(char) * (textLength + 1));
或完全避免施放。