黑马程序员技术交流社区
标题:
在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