A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 饶世红 中级黑马   /  2014-12-20 22:32  /  2052 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

好郁闷,在控制台的代码
int main()
{
char *str;
scanf("%s",str);
printf("%s",str);
}

上面的语句在mac命令中能运行,但是在xcode的控制台就老是报lld问题,想问下论坛里的大神们遇到过这种问题没?

6 个回复

倒序浏览
加stdio.h了么

点评

加了,不加,在命令中怎么可能输出,一样的代码,我把指针改成字符数组xcode中就对了  发表于 2014-12-20 22:40
回复 使用道具 举报
char * shr;//这句的含义是定义一个指向字符指针变量str,你后面并没有跟“字符串”
你用scanf函数中的%s字符串标识符去接收,指向字符指针变量,明显类型不同,不知道你是怎么运行成功,我用VC6.0直接报错
回复 使用道具 举报
你给str赋一个字符串试试
char *str = "abc";
并且不能用scanf给str输入新的字符串的,这个很复杂,你要找本书看看
回复 使用道具 举报
有什么复杂的,不就是:因为C语言是比较低级的语言,没有字符串概念,只有字符数组,不能自动分配空间,要存放数据,必须预先定义存储空间的大小。你可能会问为什么这种可以呢:char *name="abcd";这是因为这种也是字符数组初始化固定的空间4个,所以你要记住,初始化一定要预定存放的空间大小!

还有你想达到高级语言的效果,你也可以用a[i].name =  (char *)malloc(100); /*这里也要常量*/scanf("%d%s",&a[i].nu,a[i].name); 就没问题了!
回复 使用道具 举报
谁说不能用scanf给str输入新的字符串的
下面完整代码:

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

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

    scanf("%s",str);
    printf ("%s\n",str);
    return 0;
}
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马