2017-02-14 3 views
-2

Пожалуйста решить эту проблему ....Закрепить программу с помощью указателей, чтобы определить длину строки символов

#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

+3

Stackoverflow не завод решения. Это форум вопросов и ответов. Пожалуйста, укажите больше информации, чем просто код, и, пожалуйста, укажите, что вы сделали, чтобы попытаться решить проблему. Кроме того, попробуйте указать информацию о указателях Google, потому что это ваша проблема. – Gab

+2

'int x; int y = x; x = 5; // почему y не содержит 5? ' – immibis

+3

Вы не устанавливаете' cptr' в хорошее значение; вы устанавливаете его в неопределенное значение в 'name', прежде чем вы установите' name' на известное значение. Это не приводит к счастью, но приводит к неясным комментариям других людей, иллюстрирующих, но не объясняющих проблему. Все ли это неправильно, это отдельный вопрос. Ваш код не является C99 или C11, потому что вы не указали тип возврата 'main()'. –

ответ

4
  • 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; после 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; 
} 
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;                   
} 
+1

Да, за исключением того, что назначение, по-видимому, вычисляет длину с помощью указателей. Конечно, у вас есть одна переменная указателя в коде; это, вероятно, не то, что было предназначено. –

+0

Ах, да, я вижу это сейчас. – WizKiz