LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 801|回复: 13

一个数组问题

[复制链接]
发表于 2004-5-1 18:27:37 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX 64

int main(void)
{
        char a[MAX];
        int i;
        scanf("%s",a);
        int len=strlen(a);
        printf("%d\n",len);
        for(i=0;i<len;i++)
                printf("%c",a[len]);
        return 0;
}
为什么输出不了字符数组a的内容?
请指教
发表于 2004-5-1 18:36:02 | 显示全部楼层
好象是len=strlen(a)/sizeof(char); ??
发表于 2004-5-1 21:38:22 | 显示全部楼层
晕~~

printf("%c",a[len]); = printf("%c",'\0');

你说能显示出啥?
 楼主| 发表于 2004-5-1 22:14:18 | 显示全部楼层

还是有些不懂

还是有些不懂啊

len=strlen(a)/sizeof(char);
这个语句不行

还有printf("%c",a[len]);怎么等于printf("%c",'\0');
发表于 2004-5-1 22:22:57 | 显示全部楼层

回复: 还是有些不懂

最初由 @Am 发表
还是有些不懂啊

len=strlen(a)/sizeof(char);
这个语句不行

还有printf("%c",a[len]);怎么等于printf("%c",'\0');


strlen(a)是算出输入有多少个子符 ,sizeof(char)是 char类型所占的长度,

意思就是????  我也糊涂了。。。。先停住。。:help :rolleyes:
发表于 2004-5-1 22:48:36 | 显示全部楼层
我看devel和@Am两倍都应该好好补习一下C语言的基础知识.
C语言中一个字符占用一个字节,strlen()返回的是字符串的个数,同时也可以认为是占用的字节数,@Am的用法并没有什么问题,倒是devel自己糊涂了...
对于这句代码:
for(i=0;i<len;i++)  printf("%c",a[len]);
a[len]是表示字符串的最后一个字符'\0'.这个字符是不可显示的.当然看不到结果了.
 楼主| 发表于 2004-5-1 23:35:14 | 显示全部楼层

多谢版主

这真是个低级的错误啊!!!改正如下:
#include <stdio.h>
#include <string.h>

#define MAX 64

int main(void)
{
char a[MAX];
int i;
scanf("%s",a);
int len=strlen(a);
printf("%d\n",len);
for(i=0;i<len;i++)
printf("%c",a);
return 0;
}
错把len当成i了,看来写代码时要认真仔细啊!
发表于 2004-5-2 07:15:30 | 显示全部楼层

re

应该多看看数据结构了!遍历数组
int main()
{
      int i,a[10];
      for(i=0;i<10;i++)
      {
              a = i;
      }
      for(i=9;i>=0;i--)
      {
              printf("%d",a);
      }
      printf("\n");
      return 0;
}
发表于 2004-5-2 07:17:28 | 显示全部楼层

re

我的代码怎么没有缩进呀????
发表于 2004-5-2 08:23:01 | 显示全部楼层

回复: re

最初由 menglianjing 发表
我的代码怎么没有缩进呀????

要保持缩进,看看置顶的贴子.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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