红联Linux门户
Linux帮助

初学者遇到的小问题

发布时间:2012-04-02 21:48:22来源:红联作者:
在linux终端下新建c程序:
#include
#include
int main(void)
{
char *str;
scanf("please input:%s\n",str);
printf("the string is:%s\n", str);
return EXIT_SUCCESS;
}
编译没错,运行的时候,看不到“please input:”输入字符串,打印出来str的值为乱码。请问是什么原因造成的。谢谢额
文章评论

共有 14 条评论

  1. Cherles 于 2012-04-05 13:27:26发表:

    这是神马啊?

  2. olderlong 于 2012-04-04 22:35:24发表:

    引用:
    另外还得给str分配足够的内存空间,否则会溢出,segment fault
    Guest from 166.111.66.x 发表于 2012-4-3 13:11




    呵呵,lz 应该找本C的书看看。

  3. ggddver 于 2012-04-04 21:30:25发表:

    11# Guest from 119.146.192.x
    运行没问题的啊,用code block编译了一下,没问题

  4. hqhcqhao 于 2012-04-04 15:11:28发表:

    建议使用fgets
    #include
    #include
    int main(void)
    {

    char *str=NULL;
    str=malloc(sizeof(char));
    printf("please input:");
    fgets(str,7,stdin);
    printf("the string is:%s",str);
    return EXIT_SUCCESS;

    这样应该就能得到想要输出的结果。。

  5. 于 2012-04-04 13:22:23发表:

    重新改了下:
    #include
    #include
    int main(void)
    {
    char *str=NULL;
    str=malloc(sizeof(char)+80);
    printf("please input:\n");
    scanf("%s", str);
    printf("the string is:%s\n", str);
    return EXIT_SUCCESS;
    }
    这次编译不出现警告,运行printf打印不出来,就看到光标闪烁。。。。。。。

  6. 卡卡暗那 于 2012-04-04 11:20:50发表:

    把scanf("please input:%s\n",str)这句改成两行:
    printf("please input:");
    scanf("%s",str);
    这样应该可以了

  7. 于 2012-04-04 10:01:34发表:

    这可不是BASIC语言,哈哈

  8. 于 2012-04-03 20:52:45发表:

    只能把“please input:”分开写出来吗,不能放在scanf里面哦?????

  9. ggddver 于 2012-04-03 20:34:00发表:

    [i=s] 本帖最后由 ggddver 于 2012-4-3 20:36 编辑 [/i]

    你的scanf语句有问题啊,scanf中的please input 这个完全不需要的,
    你要是想看到这个应该是使用printf("please input:\n");
    scanf语句改为scanf("%s", str);
    最终的程序应该为
    #include
    #include
    int main(void)
    {
    char *str;
    printf("please input:\n");
    scanf("%s", str);
    printf("the string is:%s\n", str);
    return EXIT_SUCCESS;
    }
    但是这个程序是有问题的,str是个字符指针,应该是有初始化的,但是这个里面没有给出初始化啊
    用gcc编译的时候最好加上-Wall这个选项
    $ gcc -Wall txt.c -o txt
    txt.c: 在函数‘main’中:
    txt.c:6:10: 警告:此函数中的‘str’在使用前未初始化

    这个是我改后编译给出的警告

  10. 于 2012-04-03 13:11:46发表:

    另外还得给str分配足够的内存空间,否则会溢出,segment fault

  11. 于 2012-04-03 13:06:59发表:

    引用:

    int main(void)
    {
    char *str;
    printf("please input: ");
    scanf("%s",str);
    printf("the string is:%s\n", str);
    return EXIT_SUCCESS;
    }

  12. xuheng 于 2012-04-03 05:48:02发表:

    看不懂这个,帮顶下

  13. jsbxw 于 2012-04-03 04:46:48发表:

    不懂的路过

  14. shaoguangleo 于 2012-04-02 23:08:20发表:

    str前面加上&