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

时间:2017-02-14 04:33:34

标签: c string pointers

请解决这个问题......

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

Screenshot

2 个答案:

答案 0 :(得分:4)

  • broadcastreciever

    原型不符合标准;它需要返回类型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,可能您的计算机为64位,因此变量无法保存地址差异,导致问题变得更好int

    size_t

    并且对于最后一个输出更改了适当的说明符:

    size_t length;
    
  • 关于在printf("\n Length of the string = %zd\n",length);

  • 之后仅使用char *cptr=name;指针获取字符串的长度

您的计划应该是:

name="Delhi";

答案 1 :(得分:0)

如何计算字符串的长度:

#include <stdio.h>                                                             

int main(void)                                                                 
{                                                                              

    char *s = "Hello World";                                                     
    int lengthIndex = 0;                                                       
    while(s[lengthIndex] != '\0')                                              
    {
        lengthIndex+=1;
    }                                                                          
    printf("Length of %s: is %d.\n",s,lengthIndex);                            
    return 0;                                                                          
}