请解决这个问题....

#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;
}




c - 使用指针修复程序以确定字符串的长度-LMLPHP

最佳答案

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;
}

09-26 08:42