определить функцию с указателем ввода - PullRequest
0 голосов
/ 10 сентября 2018

Я не совсем понимаю, как работать с указателями.

Внутри функции мне нужно написать код, который возвращает длину входной строки.

int mystrlen (const char *s)
{
    char *s[1000], i;
    for(i = 0; s[i] != '\0'; ++i);
    printf("Length of string: %d, i");
    return 0;
}

Не могли бы вы сказать мне, как заставить это работать? Спасибо !!

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Прежде всего, использование указателей, как говорит число, состоит в использовании ссылки вместо реальной переменной, поэтому, если вы передаете ссылку по параметру, вы не передаете ее фактическое значение, просто адрес !

Правильный код:

#include <stdio.h>

int mystrlen (const char *s)
{
    int i;
    for( i = 0; s[i] != '\0'; ++i);
    printf("Length of string: %d\n", i);
    return 0;

}

void main(){
    char *string = "Hello World";
    mystrlen(string);
}

Еще одна вещь, на которую следует обратить внимание: вы пытаетесь объявить переменную const и изменить ее. Когда вы объявляете переменную const, она не должна меняться.

0 голосов
/ 10 сентября 2018

Удалить char *s[1000], объявить int i вместо char i и вернуть i вместо 0:

  • Вам необходимо удалить s внутри тела функции, потому что это «скрытие переменной» s, которое является параметром функции, то есть параметр функции s не может быть прочитан вообще.
  • Изменение char i на int i, вероятно, увеличит диапазон возможных значений для возврата. Если вы передадите строку с 128 символами, char i приведет к возвращению -128, если это 8-битный тип со знаком. int гарантированно будет 16-разрядным, что позволяет использовать строки длиной до 32767 символов (этого более чем достаточно для наиболее распространенного использования функции длины строки).
  • Вы возвращаете i, потому что в противном случае функция бессмысленна; даже если вы напечатаете значение, вам понадобится способ использовать длину строки, и вы не сможете этого сделать, если не вернете его из функции.

Исправленный код с примером:

#include <stdio.h>

int mystrlen(const char *s)
{
    int i;
    for (i = 0; s[i] != '\0'; ++i);
    return i;
}

int main(void)
{
    const char *s = "Hello world!";
    int len = mystrlen(s);
    printf("Length of string: %d\n", len);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...