请解决这个问题......
#include<stdio.h>
main()
{
char *name;
int length;
char *cptr=name;
name="Delhi";
printf("%s\n",name);
while(*cptr != '\0')
{
printf("%c is stored at address %u\n",*cptr,cptr);
cptr++;
}
length=cptr-name;
printf("\n Length of the string = %d\n",length);
return 0;
}
<小时/>
最佳答案
main()
原型(prototype)不符合标准;它需要返回类型
int
。因此将其更改为:int main(void)
或
int main(int argc, char* argv[])
printf("%c is stored at address %u\n",*cptr,cptr);
%u
不是指针的正确说明符;您需要使用%p
相反:printf("%c is stored at address %p\n",*cptr,(void*)cptr);
length=cptr-name;
length
类型为int
也许你的机器是 64 位的,所以变量不能保存地址的差异,这会导致问题,所以最好使用size_t
.size_t length;
并为最后一个输出更改适当的说明符:
printf("\n Length of the string = %zd\n",length);
关于仅使用指针获取字符串的长度,请输入
char *cptr=name;
之后name="Delhi";
你的程序应该是:
#include <stdio.h>
main()
{
char *name;
size_t length;
name="Delhi";
char *cptr=name;
printf("%s\n",name);
while(*cptr != '\0')
{
printf("%c is stored at address %p\n",*cptr,(void *)cptr);
cptr++;
}
length=cptr-name;
printf("\n Length of the string = %zd\n",length);
return 0;
}
关于c - 修复使用指针确定字符串长度的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217923/