c语言,输入字符串并计算字符长度

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[50];
int i=0,*j;
gets(a);//输入字符串
j=a;
while(*j!='\0')
{
j++;//指针指向下一个数组字符
i++;
}
printf("字符串为%s,字符串的长度为%d",a,i);
system("pause");
}

为什么我输入任何字符串它都只会显示i=21,(i为计算字符长度的变量)??求解

int i=0,*j; 定义了一个整型指针变量j,j++会跳过一个整型数据空间(4)
如:输入数据为:abcdefg
j=a; 此时j指向a所在的地址
j++; j跳过四个字节,j指向e所在地址,因此,你的统计会不准确。
之所以输出21,只能说,你的程序运行中,扫描内存中的数据是以\0结尾的,而只有找到21*4的位置才发现\0,这是运行时的情况,不是必然的。
修改成char *j;就好了。这样j++会跳过一个字符型数据空间(1),才能正确遍历数组!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-06
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[50];
int i=0;
char *j;
gets(a);//输入字符串
j=a;
while(*j!='\0')
{
j++;//指针指向下一个数组字符
i++;
}
printf("字符串为%s,字符串的长度为%d",a,i);
system("pause");
}
这程序没什么大问题啊,除了一处语法错误,我已经改过来了
第2个回答  2012-11-28
把j的类型改成char*
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[50];
int i=0;
gets(a);//输入字符串
char *j=a;
while(*j!='\0')
{
j++;//指针指向下一个数组字符
i++;
}
printf("字符串为%s,字符串的长度为%d",a,i);
system("pause");
}
第3个回答  2012-11-28
直接用strlen(a)函数就可以了。
第4个回答  2012-11-28
int i=0,*j;改成

int i=0;
char *j;试试

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网