【发布时间】:2013-09-05 05:44:55
【问题描述】:
我正在尝试从键盘读取输入字符串并将其显示在 ncurses 的新窗口中。 接收到的字符串被传递给函数 display。 这个函数有一个链接列表。 将该字符串与此链接列表结构的元素从列表顶部到末尾进行比较。 如果找到匹配,它会打印那些特定的列表元素,如果没有,它就会出来。
代码如下:
void main()
{
char *str=(char*)malloc(10*sizeof(char));
mvprintw (1,0, "%s","ivrcode:");
mvscanw(1,8,"%s",str);
mvprintw (1,8, "%s",str);
initscr ();
cbreak();
curs_set (2);
clear();
display1(str);
refresh();
}
void display1(char *r)
{ char * status;
int thisDTMF;
struct linklist * curser=listhead;
int count;
mvprintw (2,0, "%s","vId");
mvprintw (2,10, "%s","msisdn" );
mvprintw (2,25, "%s","ivrCode" );
mvprintw (2,35, "%s","state" );
mvprintw (2,45, "%s","DTMF" );
count = 4;
while(curser!=NULL)
{ status=getState(curser->state);
thisDTMF=getDTMF(curser->dtmf);
if(curser->ivrCode==r)
{ mvprintw (count,0,"%d",curser->vId);
mvprintw (count,10,"%s",curser->msisdn);
mvprintw (count,25, "%s",curser->ivrCode );
mvprintw (count,35, "%s",status );
if(thisDTMF==35||thisDTMF==42)
mvprintw (count,45, "%c",thisDTMF );
else
mvprintw (count,45, "%d",thisDTMF );
count++;
}
curser=curser->next;
}
}
它也从键盘获取输入字符串并打印。
编译成功。
但是当我按 Enter 时,它什么也没有显示。
有什么建议吗?
【问题讨论】:
-
不要为
char *str;分配内存 -
我没有为 char * str 分配任何内存
-
@user2720337 我认为他的意思是您不分配..即您需要分配
-
我想这就是@Grijesh 想说的——你需要为
str分配内存。 -
使用
gcc -Wall -g编译代码。改进它直到你没有收到警告。了解如何使用gdb调试器。
标签: c linux segmentation-fault ncurses