蜗牛冲上天 发表于 2019-3-9 13:53:02

问一个小问题 从键盘上获取字符串,并将获取的字符串打印

#include <stdio.h>
int main()
{
    char* word;
        printf("请输入你的名字:\n");
        scanf("%s\n",&word);
        printf("大家好,我叫%s\n",word);
    return 0;   
}
这个 为什么 运行不了呢   如果非要用数组的话 该怎么使用呢?   
求大佬指教{:9_241:}

jackz007 发表于 2019-3-9 13:58:35

#include <stdio.h>
int main()
{
      char name                     ; // 为字符数组 name[] 分配 80 字节空间
      printf("请输入你的名字: ")          ;
      scanf("%s", name)               ; // scanf() 没必要出现'\n' , name 便是地址,无需使用 & name
      printf("大家好,我叫%s\n" , name)   ;
      return 0                        ;
}

蜗牛冲上天 发表于 2019-3-9 14:02:38

jackz007 发表于 2019-3-9 13:58


&不是 把从键盘中输入的存入name吗

jackz007 发表于 2019-3-9 14:12:23

蜗牛冲上天 发表于 2019-3-9 14:02
&不是 把从键盘中输入的存入name吗

scanf("%s" , name) ;
      scanf() 要求提供一个内存地址用于保存从键盘读取到的字符串,name[] 是字符数组,name 便是内存地址,也就是字符数组第一个元素的内存地址,等同于 & name ;
      int k                  ;
      float f                ;
      scanf("%d%f" , & k , & f);
      scanf() 同样需要提供变量 k , f 的内存地址,显然,k 和 f 本身是变量值而不是其内存地址,在这种情况下,就需要使用取地址操作符 & 了。

蜗牛冲上天 发表于 2019-3-9 14:19:05

jackz007 发表于 2019-3-9 14:12
scanf() 要求提供一个内存地址用于保存从键盘读取到的字符串,name[] 是字符数组,name 便是内 ...

{:5_106:}{:5_106:}谢谢 终于明白了
页: [1]
查看完整版本: 问一个小问题 从键盘上获取字符串,并将获取的字符串打印