2013-11-10 5 views
1

Мне нужно найти количество слов, которые имеют в них определенный символ, что я получаю от аргументов. Мне нужно работать с общим вводом. Я сделал функцию, но это не сработает. Я не знаю, как правильно работать с аргументами.-Error: Подстрочное значение не является ни массивом, ни указателем, ни вектором

void function(char *argv) { 
    char x; 
    int c,i; 
    x = argv[1][0] ; 
    i = 0; 
    while((c = getchar()) != EOF) { 
     if(c == x) 
     ++i; 
    } 
    printf("%d \n",i); 
} 
+0

Какие ошибки вы получаете? Они могут помочь в выяснении того, что не так. – rhughes

+0

Вам нужно прочитать книгу C новичка ** и обратить внимание. ** –

+0

Поскольку это упражнение, я попытаюсь направить вас к ответу. 'X = argv [1] [0];' Это неверно , 'argV' должен быть 1-мерным массивом символов, но то, что вы здесь, это то, как вы обрабатываете двумерный массив. Одна из ваших проблем заключается в том, чтобы попытаться исправить код за строкой и точно понять, что вы делаете. –

ответ

3

Предполагая, что argv такое же, как то, что передается main ваша функция декларации неверна: она должна быть

void function(char *argv[]) { 
    ... //    ↑↑ 
} 

Теперь вы можете обращаться argv как массив массивов символов, с двумя индексами.

Конечно, так как вы не используете какой-либо части argv за первый символ первого параметра, вы можете также принять один char, и пусть вызывающий решить, `обугливается это будет:

void function(char x) { 
    ... 
} 
... 
int main(int argc, char *argv[]) { 
    ... // Check argc... 
    function(argv[1][0]); 
} 
+2

Мне просто нравится это ↑ ... – Maroun

+0

спасибо! – user2975913

+0

@ user2975913 Добро пожаловать! Взгляните на редактирование, пропустив один символ «char», вы сохраните работу с атрибутами командной строки в «main», не «проливая» его на другие функции. – dasblinkenlight

Смежные вопросы

 Смежные вопросы