用printf输出字符串出错

hxjzfm 2011-05-12 10:02:06
char c[10]={'a','b','c'};	
StrInput = c;
printf("%s",StrInput);

这个一直是输出<null>,换个printf_s也同样,求解这种字符数组赋值给字符串后,怎么输出才对?
...全文
361 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin626521 2011-05-12
  • 打赏
  • 举报
回复
6楼正解。不含糊
机器再学习 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]
引用 1 楼 c_losed 的回复:
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c','\0'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
[/Quote]
++正解
domsfree 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sjy88813 的回复:]
字符数组后面有结束符吗,输出的后面全是乱码吧
直接定义
char c[10]="abc"
char *StrInput = c;
printf("%s",StrInput);
[/Quote]我用这个不会输出乱码,但是不指定长度就有乱码了,写成char c[]={'a','b','c'};的话就有乱码
無_1024 2011-05-12
  • 打赏
  • 举报
回复
没有结束符 '\0'
c_losed 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]

引用 1 楼 c_losed 的回复:
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c','\0'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
[/Quote]
多谢赵老师指点 是我疏忽了
赵4老师 2011-05-12
  • 打赏
  • 举报
回复
引用 1 楼 c_losed 的回复:
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c','\0'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
zjs100901 2011-05-12
  • 打赏
  • 举报
回复
++[Quote=引用 3 楼 yfkiss 的回复:]
printf只能输出c语言内置的类型
如果StrInput的类型是string的话,用printf是不work的
[/Quote]
sjy88813 2011-05-12
  • 打赏
  • 举报
回复
字符数组后面有结束符吗,输出的后面全是乱码吧
直接定义
char c[10]="abc"
char *StrInput = c;
printf("%s",StrInput);
yfk 2011-05-12
  • 打赏
  • 举报
回复
printf只能输出c语言内置的类型
如果StrInput的类型是string的话,用printf是不work的
zjs100901 2011-05-12
  • 打赏
  • 举报
回复
StrInput是啥类型?string吗?是的话就用cout。或者printf("%s",StrInput.c_str());

c_losed 2011-05-12
  • 打赏
  • 举报
回复

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
tiancruyff 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tiancruyff 的回复:]
引用 1 楼 c_losed 的回复:
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}

这个vc6.0和2005执行的结果都是abc 无乱码
如果把c[10]改……
[/Quote]
我想起来了 char数组初始化的时候把未利用的位置都memset'\0'所以可以直接赋值。
tiancruyff 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 c_losed 的回复:]
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
[/Quote]
这个vc6.0和2005执行的结果都是abc 无乱码
如果把c[10]改成c[3]就有乱码
不知道转换的机制是什么.
求高手解答。
就想叫yoko 2011-05-12
  • 打赏
  • 举报
回复
+1[Quote=引用 6 楼 zhao4zhong1 的回复:]

引用 1 楼 c_losed 的回复:
C/C++ code

#include<stdio.h>

int main(void)
{
char c[10]={'a','b','c','\0'};
char *StrInput = c;
printf("%s",StrInput);
return 0;
}
[/Quote]

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧