字符串数组(不是字符串)

songyc907 2013-01-10 11:10:02
下面的代码为啥输出结果啥都没有?

char S[10000][50]; //定义一个字符串数组。一共有10000个字符串,每个字符串涵盖50个字符的。

int main(){
printf("%c\n",S[0][0]);
return 0;
}

另外如果:
char S[10000][50]; //定义一个字符串数组。一共有10000个字符串,每个字符串涵盖50个字符的。

int main(){
printf("%c\n",S[0][0]+1); //加个1
return 0;
}
为啥打印出一个笑脸?
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-01-10
  • 打赏
  • 举报
回复
char S[10000][50] = { "string1", "string2", "string3", ... }; 需要如上定义+初始化。
pengfoo 2013-01-10
  • 打赏
  • 举报
回复
下面的代码为啥输出结果啥都没有?
答:楼主给数组赋值了吗?
 
char S[10000][50]; //定义一个字符串数组。一共有10000个字符串,每个字符串涵盖50个字符的。
 
int main(){
     printf("%c\n",S[0][0]);
     return 0;
 }
 
另外如果:
 char S[10000][50]; //定义一个字符串数组。一共有10000个字符串,每个字符串涵盖50个字符的。
 
int main(){
     printf("%c\n",S[0][0]+1);  //加个1
     return 0;
 }
 为啥打印出一个笑脸?
答:数组没有初始化,所以乱码啊
漫步者、 2013-01-10
  • 打赏
  • 举报
回复
printf("%c\n",S[0][0]+1); //加个1 char S[10000][50];你取出它的首地址的字符,然后用它的ASCII码+1得出的是一个int数据,然后再转换成相应的字符,至于是笑脸,这个得看你的数组初始化的数据时啥样的。如果没有初始化,那数组的数据时任意值,输出的数据当然也是任意的(包含你的笑脸)。
crazy_samba 2013-01-10
  • 打赏
  • 举报
回复
数组如果不初始化,输出的结果是随机的。
guotianyu2000 2013-01-10
  • 打赏
  • 举报
回复
全局字符数组变量的默认初始值是'\0',而该字符值是不可显示字符,所以
printf("%c\n",S[0][0]);
打印结果好像是什么也没有。
printf("%c\n",S[0][0] + 1);
会打印出笑脸是因为S[0][0] + 1的值等于笑脸字符的ASCII(你可查看笑脸ASCII值)。
lin5161678 2013-01-10
  • 打赏
  • 举报
回复
汗 楼上各位 没注意到吗 楼主是定义了全局变量 那个数组有初始化的 值全部是0 第一次%c输出ascii 0 第二次%c输出ascii 1 都是不可显示字符 具体显示什么和环境有关
SKATE11 2013-01-10
  • 打赏
  • 举报
回复
你定义的数组没有初始化 里面数据是随机的 输出的字符不确定

69,336

社区成员

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

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