не удается прочитать символы строки - PullRequest
0 голосов
/ 02 февраля 2019

есть 2 функции, первая для вычисления веса слова, вторая для проверки, какое из слов имеет наибольшее значение и возвращает его адрес, моя проблема в том, что когда я делаю двойной указатель и вставляю в него значения, тогда«вставить» этот указатель на мою функцию, он не может прочитать значения в нем. (не самый лучший английский извините, я старался изо всех сил)

он работает только всякий раз, когда копирует мою функцию в основную функцию и запускает ее с цикломЯ все еще новичок, поэтому постарайтесь объяснить проблему и, пожалуйста, постарайтесь не злиться, если это глупый вопрос!

#include<stdio.h>
#include<string.h>

int calc_weight(char* word);
char* max_weight(char* s[], int n);

int main()
{   
    char s[5][10];
    for (int i = 0; i < 5; i++)
        scanf("%s", (s + i));
    printf("%s\n",max_weight(s, 5));


    return 0;
}
int calc_weight(char* word)    //calculates weight of the word
{       //assuming this function gets only small letters a...z
    int counter = 0;
    for (int i = 0; i < strlen(word); i++)// a=1,b=2...
        counter += word[i] - 'a' + 1;
    return counter;
}
char* max_weight(char* s[], int n)
{
    int maxind = 0;
    for (int i = 1; i < n; i++)
        if (calc_weight(s + i) > calc_weight(s + maxind))
            maxind = i;
    return (s+maxind);
}

1 Ответ

0 голосов
/ 02 февраля 2019

В max_weight когда вы пишете char* s[], это означает:

объявлять s как массив указателей на символ

, но вы не передаете массивуказатель.

Вместо этого char s[][10], например:

char* max_weight(char s[][10], int n)

, чтобы сказать, что s - это указатель на массив из 10 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...