鱼C论坛

 找回密码
 立即注册
查看: 2916|回复: 11

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

[复制链接]
发表于 2021-5-18 15:32:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        char *player[3][3]={"zhao","50","1","qian","60","2","sun","70","3"};
        int i,j;
        char *name;
        scanf("%s",name);
        player[2][2]=name;
        printf("%s",player[2][2]);
        return 0;
}
最佳答案
2021-5-20 22:05:00
横行无忌 发表于 2021-5-20 20:56
你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

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

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

使用道具 举报

发表于 2021-5-18 18:32:08 | 显示全部楼层
你没按要求贴代码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 18:48:09 | 显示全部楼层
#include <stdio.h>

int main()
{
        char player[3][3];

        char name;
        scanf("%c",&name);
        player[2][2]=name;
        printf("%c",player[2][2]);
        return 0;
}
改成这样可以输出一个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 19:01:50 | 显示全部楼层
#include <stdio.h>

int main()
{
        char name[10];
        scanf("%s",name);
        printf("%s",name);
        return 0;
}
这样直接就可以输入一个字符串再输出,你写的那个代码,。。。还是慢慢学吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 20:56:15 | 显示全部楼层
王之叹息 发表于 2021-5-18 19:01
这样直接就可以输入一个字符串再输出,你写的那个代码,。。。还是慢慢学吧

你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2021-5-20 21:18:39 | 显示全部楼层
我。。。。。。。,我虽然还没学那么好,但我感觉你那个代码很多地方都不对啊,程序不是不报错就行的,你那个虽然只有警告,但很多都感觉不太对。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-20 22:05:00 | 显示全部楼层    本楼为最佳答案   
横行无忌 发表于 2021-5-20 20:56
你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

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

int main()
{
        char *player[3][3]={"zhao","50","1","qian","60","2","sun","70","3"};
        int i,j;
        char *name;
        scanf("%s",&name);
        player[2][2]=name;
        printf("%c",player[2][2]);
        return 0;
}
首先scanf函数后边的变量前要加&符号(尽管你定义了char *name但它本质上还是变量)。然后name是个char类型的,中间输入的时候就是直接输进name里了,所以最后输出应该也只能是输出一个字符,所以把%s改为%c
有什么想说可以再回
最后,能不能给个最佳答案呢亲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-20 23:17:04 | 显示全部楼层
王之叹息 发表于 2021-5-20 22:05
好吧好吧,我的错,看下面这个应该行了

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

我还没整明白,整明白了一定发答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-20 23:44:12 | 显示全部楼层
横行无忌 发表于 2021-5-20 23:17
我还没整明白,整明白了一定发答案。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-21 09:39:09 | 显示全部楼层
横行无忌 发表于 2021-5-20 20:56
你没有理解我的意思,你的程序得复杂程度太低了,没有什么帮助。

兄弟,我估计也没其他人来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-21 19:14:07 | 显示全部楼层
player是一个指针数组
char *name; 语句会定义一个指针,该指针未被初始化,是个无效的地址,会引起非法访问
你的程序指针是一个没有分配内存的,你需要给他分配一个地址然后才可以往里面写值
不要给任何没有初始化的指针的赋值

或者直接 char  *name =  “字符串” ; 初始化把常量地址给name
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-21 19:44:17 | 显示全部楼层
本帖最后由 1055741510 于 2021-5-21 20:00 编辑

#include <stdio.h>

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

char *name = "abcd";//正确
char *name = {a,b,c,d,'\0'};//错误
char name[128] = {a,b,c,d,'\0'};//正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 10:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表