0

h,我是学生,学习 C 编程,通过 lab-windows CVI.. 在 GUI 中我创建了文本框和列表框...我从文件读取到文本框和用户,搜索一个单词。 ..匹配时,它应该出现在列表框中的单词...我使用了一个字符单词,(首先作为指针或数组)但使用关键字将单词放入列表框中,但是我得到错误:它指向char并期望char。我把它改成了简单的字符,但它抱怨它很小,即使我已经分配了......我希望你能解决我的问题..感激......`int i = 0,textLength; 字符 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;`    
4

1 回答 1

1

malloc您将to的返回类型转换charchar*(指向 char 的指针)。改为键入word2 = (char*) malloc (sizeof(char) * (textLength + 1));或完全避免强制转换。

于 2017-12-22T22:09:47.087 回答