横行无忌 发表于 2021-5-18 15:32:05

为什么我输入一个字符串,但是无法打印出来?

#include <stdio.h>

int main()
{
        char *player={"zhao","50","1","qian","60","2","sun","70","3"};
        int i,j;
        char *name;
        scanf("%s",name);
        player=name;
        printf("%s",player);
        return 0;
}

王之叹息 发表于 2021-5-18 18:32:08

你没按要求贴代码吧{:5_102:}

王之叹息 发表于 2021-5-18 18:48:09

#include <stdio.h>

int main()
{
      char player;

      char name;
      scanf("%c",&name);
      player=name;
      printf("%c",player);
      return 0;
}
改成这样可以输出一个字符

王之叹息 发表于 2021-5-18 19:01:50

#include <stdio.h>

int main()
{
      char name;
      scanf("%s",name);
      printf("%s",name);
      return 0;
}

这样直接就可以输入一个字符串再输出,你写的那个代码,。。。还是慢慢学吧

横行无忌 发表于 2021-5-20 20:56:15

王之叹息 发表于 2021-5-18 19:01
这样直接就可以输入一个字符串再输出,你写的那个代码,。。。还是慢慢学吧

你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

王之叹息 发表于 2021-5-20 21:18:39

我。。。。。。。,我虽然还没学那么好,但我感觉你那个代码很多地方都不对啊,程序不是不报错就行的,你那个虽然只有警告,但很多都感觉不太对。。。。

王之叹息 发表于 2021-5-20 22:05:00

横行无忌 发表于 2021-5-20 20:56
你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

好吧好吧,我的错,看下面这个应该行了
#include <stdio.h>

int main()
{
      char *player={"zhao","50","1","qian","60","2","sun","70","3"};
      int i,j;
      char *name;
      scanf("%s",&name);
      player=name;
      printf("%c",player);
      return 0;
}
首先scanf函数后边的变量前要加&符号(尽管你定义了char *name但它本质上还是变量)。然后name是个char类型的,中间输入的时候就是直接输进name里了,所以最后输出应该也只能是输出一个字符,所以把%s改为%c
有什么想说可以再回
最后,能不能给个最佳答案呢亲{:5_92:}{:5_92:}

横行无忌 发表于 2021-5-20 23:17:04

王之叹息 发表于 2021-5-20 22:05
好吧好吧,我的错,看下面这个应该行了

首先scanf函数后边的变量前要加&符号(尽管你定义了char *name ...

我还没整明白,整明白了一定发答案。

王之叹息 发表于 2021-5-20 23:44:12

横行无忌 发表于 2021-5-20 23:17
我还没整明白,整明白了一定发答案。

{:10_266:}

王之叹息 发表于 2021-5-21 09:39:09

横行无忌 发表于 2021-5-20 20:56
你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

兄弟,我估计也没其他人来了{:10_256:}

万千只cnm 发表于 2021-5-21 19:14:07

player是一个指针数组
char *name; 语句会定义一个指针,该指针未被初始化,是个无效的地址,会引起非法访问
你的程序指针是一个没有分配内存的,你需要给他分配一个地址然后才可以往里面写值
不要给任何没有初始化的指针的赋值

或者直接 char*name =“字符串” ; 初始化把常量地址给name

1055741510 发表于 2021-5-21 19:44:17

本帖最后由 1055741510 于 2021-5-21 20:00 编辑

#include <stdio.h>

int main()
{
      char *player={"zhao","50","1","qian","60","2","sun","70","3"};
      int i,j;
      char *name; //改成 char name,char *name仅为字符串指针 scanf并不能往里面添加字符
      scanf("%s",name);
      player=name;
      printf("%s",player);
      return 0;
}

char *name = "abcd";//正确
char *name = {a,b,c,d,'\0'};//错误
char name = {a,b,c,d,'\0'};//正确
页: [1]
查看完整版本: 为什么我输入一个字符串,但是无法打印出来?