unsigned char数组的问题

xudashu321 2013-01-25 12:00:48
有一个数组unsigned char str[] = "97,97,97,97,98,98,98,98".其中的都是十进制数字。为什么我讲前四个赋值为一个字符串能打印出aaaa,而我将后四个赋值给一个字符串的时候,能打印出bbbb,但是同时打印出aaaa。为什么这个时候还会打印出aaaa啊?
...全文
403 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
DyanWang 2013-01-25
  • 打赏
  • 举报
回复
引用 3 楼 looooooooop 的回复:
意思表达不清, 不如直接上代码
++
looooooooop 2013-01-25
  • 打赏
  • 举报
回复
意思表达不清, 不如直接上代码
lin5161678 2013-01-25
  • 打赏
  • 举报
回复
LS+1 字数不够
东大坡居士 2013-01-25
  • 打赏
  • 举报
回复
问题都没描述明白
xudashu321 2013-01-25
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
因为 char a[5]; scanf("97,98","%d,%d",&a[0],&a[1]); 会先a[0]=97;a[1]=0;a[2]=0;a[3]=0 再a[1]=98,a[2]=0;a[3]=0;a[4]=0; ?
不是的,我的实际情况是数组很大,在四个97后面是又很多空格键的ascii码。然后是四个98,然后是很多空格键的ascii码。我解析出有数据(空格就是无用数据)。我能顺利打印出四个a,但是打印四个b的时候,会先打印四个b,然后打印四个a。我很奇怪。
xudashu321 2013-01-25
  • 打赏
  • 举报
回复
引用 15 楼 turingo 的回复:
典型的形而上学,有时候看到的未必是真的。 引用 13 楼 xudashu321 的回复:引用 12 楼 turingo 的回复:未加'\0'的话,结果是不可预料的,它会持续往后找,取决于当时某个随机的'\0'在那里。 引用 10 楼 xudashu321 的回复:引用 6 楼 turingo 的回复:赋值给字符串的时候,别忘记在后面加上'\0'结束符。 ……
口出此言,相比你定看过print个的源码吧
xxb249 2013-01-25
  • 打赏
  • 举报
回复
看不懂 鸟语??
图灵狗 2013-01-25
  • 打赏
  • 举报
回复
典型的形而上学,有时候看到的未必是真的。
引用 13 楼 xudashu321 的回复:
引用 12 楼 turingo 的回复:未加'\0'的话,结果是不可预料的,它会持续往后找,取决于当时某个随机的'\0'在那里。 引用 10 楼 xudashu321 的回复:引用 6 楼 turingo 的回复:赋值给字符串的时候,别忘记在后面加上'\0'结束符。 引用 楼主 xudashu321 的回复:有一个数组unsigned char str[] =……
ForestDB 2013-01-25
  • 打赏
  • 举报
回复
怎么看不懂问题呢?
xudashu321 2013-01-25
  • 打赏
  • 举报
回复
引用 12 楼 turingo 的回复:
未加'\0'的话,结果是不可预料的,它会持续往后找,取决于当时某个随机的'\0'在那里。 引用 10 楼 xudashu321 的回复:引用 6 楼 turingo 的回复:赋值给字符串的时候,别忘记在后面加上'\0'结束符。 引用 楼主 xudashu321 的回复:有一个数组unsigned char str[] = "97,97,97,97,98,98,……
你是说printf吗?我觉得不是那样的。因为不加'\0',每次打的时候,都会打前面的内容。
图灵狗 2013-01-25
  • 打赏
  • 举报
回复
未加'\0'的话,结果是不可预料的,它会持续往后找,取决于当时某个随机的'\0'在那里。
引用 10 楼 xudashu321 的回复:
引用 6 楼 turingo 的回复:赋值给字符串的时候,别忘记在后面加上'\0'结束符。 引用 楼主 xudashu321 的回复:有一个数组unsigned char str[] = "97,97,97,97,98,98,98,98".其中的都是十进制数字。为什么我讲前四个赋值为一个字符串能打印出aaaa,而我将后四个赋值给一个字符串的时候,能打印出bbbb,但……
赵4老师 2013-01-25
  • 打赏
  • 举报
回复
因为 char a[5]; scanf("97,98","%d,%d",&a[0],&a[1]); 会先a[0]=97;a[1]=0;a[2]=0;a[3]=0 再a[1]=98,a[2]=0;a[3]=0;a[4]=0; ?
xudashu321 2013-01-25
  • 打赏
  • 举报
回复
引用 6 楼 turingo 的回复:
赋值给字符串的时候,别忘记在后面加上'\0'结束符。 引用 楼主 xudashu321 的回复:有一个数组unsigned char str[] = "97,97,97,97,98,98,98,98".其中的都是十进制数字。为什么我讲前四个赋值为一个字符串能打印出aaaa,而我将后四个赋值给一个字符串的时候,能打印出bbbb,但是同时打印出aaaa。为什么这个时候还……
按着你的方法,问题解决。但是我有一个疑问啊,为什么前面的四个我没有加'\0'就能成功打印,后面的为什么不能啊?
xudashu321 2013-01-25
  • 打赏
  • 举报
回复
引用 8 楼 MFCANDPAI 的回复:
逗号的格式都不对
这个代码是我在发帖时手写的
MFCANDPAI 2013-01-25
  • 打赏
  • 举报
回复
逗号的格式都不对
xiayiguo 2013-01-25
  • 打赏
  • 举报
回复
前面四个是什么中文字符啊?后面四个怎么又变成了英文字符啊?
图灵狗 2013-01-25
  • 打赏
  • 举报
回复
赋值给字符串的时候,别忘记在后面加上'\0'结束符。
引用 楼主 xudashu321 的回复:
有一个数组unsigned char str[] = "97,97,97,97,98,98,98,98".其中的都是十进制数字。为什么我讲前四个赋值为一个字符串能打印出aaaa,而我将后四个赋值给一个字符串的时候,能打印出bbbb,但是同时打印出aaaa。为什么这个时候还会打印出aaaa啊?
linxren 2013-01-25
  • 打赏
  • 举报
回复
楼主 aaaa bbbb 什么呀

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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