请解决这个问题....
#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()
原型不符合标准;它的返回类型为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;
之后您的程序应为:
#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;
}