Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
1

Передача символа char в функцию

03.03.2014, 18:19. Показов 4562. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, добрый день. Вопрос у меня очень простой, я бы сказал элементарный. Но в связи с запором мозга, почему то не могу его решить)
итак имеем код, который ищет сколько раз повторяется одна предустановленная буква в строке.
Вродь, все ок НО не знаю как правильно передать предустановленную букву в функцию. Напротив нужной строки я поставил пометку.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#define N 10
 
 
int funk(char *A[N], char a)
{
    int i;
    int ergebniss;
 
    if (A[N]==NULL)
    {
        return -1;
    }
 
    for (i=0;i<N;i++)
        {
            if(A[i]=a)\\ если бы буква была константой было бы..например if(A[i]='a'), но так как моя а это переменная, но мне нужно ее изобразить как символ чар, не знаю как правильно тут поступить.
            {
                ergebniss++;
            }
 
        }
        return ergebniss;
 
}
 
 
 
int main()
{
    int Ant;
 
 
  char *Vektor[N]={"Halloa"};
  char Zeichen='l';
Ant=funk(Vektor, Zeichen);
 
  printf("%d", Ant);
 
 
    return 0;
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2014, 18:19
Ответы с готовыми решениями:

Передача массива char в функцию
Пишу такой код //--------------------------------------------------------------------------- ...

Указатели Char, передача адреса в функцию
в данном случае проблема выглядит следующим образом: main(void) { char *map, *moves; ...

Сложить два символа char
Здравствуйте. у меня в задаче нужно сложить 2 символа которые разделены в массиве. у меня есть...

Парсер xml - дописывание символа к строке *char
Приветствую всех! Ради своего интереса пишу парсер xml, он уже подкрашивает форматирование, теперь...

11
Модератор
Эксперт функциональных языков программированияЭксперт Python
36608 / 20335 / 4222
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
03.03.2014, 18:34 2
Все правильно, только нужно вот так:

C
1
if(A[i]==a)
0
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
03.03.2014, 18:40  [ТС] 3
Поменял, как вы сказали. Но матюкается аццкая машинка, и пишет напротив указанной строки вот что

comparison between pointer and integer [-Werror]|
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
03.03.2014, 18:47 4
Лучший ответ Сообщение было отмечено 1nquisitor как решение

Решение

потому что ваш массив - массив указателей, а не массив символов. и, следовательно, сравниваете вы указатель с символом, что естессно не верно
0
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
03.03.2014, 18:54  [ТС] 5
согласен абсолютно, поэтому у меня и возник этот вопрос. С чем же мне его тогда сравнивать то?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36608 / 20335 / 4222
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
03.03.2014, 18:57 6
Не заметил, что A - массив указателей

C
1
if(*A[i]==a)
0
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
03.03.2014, 19:00  [ТС] 7
C
1
2
3
4
5
1
 
    
 
if(*A[i]==a)
с этим заработало, но в функцию почему то передается пустой массив. Т.к возвращает -1. Заколдованный круг какой то с этим кодом)
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
03.03.2014, 19:02 8
Цитата Сообщение от 1nquisitor Посмотреть сообщение
C++
1
if (A[N]==NULL)
может быть выполнено всегда. а вообще выход за пределы
0
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
03.03.2014, 19:09  [ТС] 9
А почему всегда? Передается же не пустой указатель. И почему выход за пределы?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36608 / 20335 / 4222
Регистрация: 12.02.2012
Сообщений: 33,660
Записей в блоге: 13
03.03.2014, 19:15 10
Лучший ответ Сообщение было отмечено 1nquisitor как решение

Решение

Ты явно перемудрил... Вот:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
 
int LetterCount(char *Word, char s)
{
    int k=0,i,n=strlen(Word);
    for (i=0;i<n;i++)
        if (*(Word+i)==s) k++;
    return k;
}
 
int main(int argc, char* argv[])
{
    char *W="Hello lol";
    printf("%c : %d \n",'l',LetterCount(W,'l'));
    printf("%c : %d \n",'o',LetterCount(W,'o'));
    return 0;
}
0
4 / 4 / 1
Регистрация: 24.02.2014
Сообщений: 102
03.03.2014, 19:19  [ТС] 11
ну мне до такого идеала далеко еще)) но просто в задании написано- если передается нулевой указатель- должно возвращаться значение -1..а теперь у меня любой указатель почему то стал нулевым..ломаю мозг, не могу понять почему
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
03.03.2014, 19:22 12
Цитата Сообщение от 1nquisitor Посмотреть сообщение
И почему выход за пределы?
A[N] - N+1-ый элемент массива А
1
03.03.2014, 19:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2014, 19:22
Помогаю со студенческими работами здесь

Написать функцию char* whatisyourname()
Здравствуйте! Есть такое задание: если не сложно, помогите его выполнить! :cry:

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings])
Почему компилятор на это матерится? ObjA.Show(&quot;A&quot;); deprecated conversion from string constant...

Передача char в функцию
Привет всем! Помогите, что неправильно: есть функция void send_new_object(char *g, char *h, int...

Передача в функцию char**
Здравствуйте! Подскажите как передавать в функцию void переменную char**, а то ошибку пишет что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru