黑马程序员技术交流社区

标题: 在xcode写scanf时报lld是什么问题? [打印本页]

作者: 饶世红    时间: 2014-12-20 22:32
标题: 在xcode写scanf时报lld是什么问题?
好郁闷,在控制台的代码
int main()
{
char *str;
scanf("%s",str);
printf("%s",str);
}

上面的语句在mac命令中能运行,但是在xcode的控制台就老是报lld问题,想问下论坛里的大神们遇到过这种问题没?
作者: joykerl    时间: 2014-12-20 22:37
加stdio.h了么
作者: xiezhongmin    时间: 2015-1-5 15:21
char * shr;//这句的含义是定义一个指向字符指针变量str,你后面并没有跟“字符串”
你用scanf函数中的%s字符串标识符去接收,指向字符指针变量,明显类型不同,不知道你是怎么运行成功,我用VC6.0直接报错
作者: Xwoder    时间: 2015-1-5 15:37
你给str赋一个字符串试试
char *str = "abc";
并且不能用scanf给str输入新的字符串的,这个很复杂,你要找本书看看
作者: xiezhongmin    时间: 2015-1-5 19:07
有什么复杂的,不就是:因为C语言是比较低级的语言,没有字符串概念,只有字符数组,不能自动分配空间,要存放数据,必须预先定义存储空间的大小。你可能会问为什么这种可以呢:char *name="abcd";这是因为这种也是字符数组初始化固定的空间4个,所以你要记住,初始化一定要预定存放的空间大小!

还有你想达到高级语言的效果,你也可以用a[i].name =  (char *)malloc(100); /*这里也要常量*/scanf("%d%s",&a[i].nu,a[i].name); 就没问题了!
作者: xiezhongmin    时间: 2015-1-5 19:56
谁说不能用scanf给str输入新的字符串的
下面完整代码:

#include <malloc.h>
#include <stdio.h>

main(void)
{
    char *str=(char *)malloc(100);//这句的意思就是和我前面说的要分配存储空间

    scanf("%s",str);
    printf ("%s\n",str);
    return 0;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2