24小时热门版块排行榜    

查看: 712  |  回复: 1

martialvv

铁虫 (初入文坛)

[求助] gdb调试C语言问题

下面是我的程序 test.c:
CODE:
#include <stdio.h>

int getinput(void);
void printmessage(int counter, int input);

int main(void)
{   
    int counter;
    int input;
   
    for(counter=0;counter<=200;counter++)
    {
        input = getinput();
        if (input==-1)
            break;
        printmessage(counter,input);
    }
   
    return 0;
}

int getinput(void)
{
    int input;
   
    printf("Enter an integer, or use -1 to exit:\n");
    scanf("%d",&input);
    return input;
}

void printmessage(int counter, int input)
{
    static int lastnum = 0;
    counter++;
   
    printf("For number %d, you entered %d (%d more than last time)\n",counter,input,input-lastnum);
    lastnum = input;
}   

我的系统是linux。编译运行,没有出现任何问题,也没有警告,不出现core文件。然后用gdb调试,却出现了以下问题:
getinput () at test_4_1.c:26
26        printf("Enter an integer, or use -1 to exit:\n" );
(gdb) s
_IO_puts (str=0x80485f0 "Enter an integer, or use -1 to exit:" ) at ioputs.c:34
34    ioputs.c: 没有那个文件或目录.

查了半天也没有结果,请问大侠这是什么问题,该怎么修改?

顺便再问第二个问题,这段程序是我抄一本书上的,原来程序里for循环里的break那句不是break而是end(0),编译运行后如果输入-1会说是segmentation fault. 我改成break后就都正常了,我的问题是end(0)是个什么东西,起什么作用,为什么书里的程序可行而我的会有这个问题?
回复此楼
Boncourage!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

martialvv

铁虫 (初入文坛)

第二个问题我知道是为什么了,应该是exit(0),那本书打印错了。那么就剩第一个问题了。
Boncourage!
2楼2014-10-03 20:23:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 martialvv 的主题更新
信息提示
请填处理意见