c语言,输入字符串并计算字符长度
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){chara[50];inti=0,*j;ge...
#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为计算字符长度的变量)??求解 展开
#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为计算字符长度的变量)??求解 展开
5个回答
展开全部
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),才能正确遍历数组!
如:输入数据为:abcdefg
j=a; 此时j指向a所在的地址
j++; j跳过四个字节,j指向e所在地址,因此,你的统计会不准确。
之所以输出21,只能说,你的程序运行中,扫描内存中的数据是以\0结尾的,而只有找到21*4的位置才发现\0,这是运行时的情况,不是必然的。
修改成char *j;就好了。这样j++会跳过一个字符型数据空间(1),才能正确遍历数组!
展开全部
#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");
}
这程序没什么大问题啊,除了一处语法错误,我已经改过来了
#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");
}
这程序没什么大问题啊,除了一处语法错误,我已经改过来了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接用strlen(a)函数就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i=0,*j;改成
int i=0;
char *j;试试
int i=0;
char *j;试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询