2013-08-12 1 views
1

Я хочу сравнить пользовательский ввод с $$, чтобы узнать, соответствует ли он одному из аргументов пользовательского ввода. Я также хочу сравнить, если `tty' & соответствует одному из аргументов пользовательского ввода. что-то вроде:

int main(int argc, char **argv) 
{ 
    if (argv[4] == '`tty` &') { //line 31 
    fprintf(stderr, "error %s\n", argv[4]); 
    return(1); 
    } 

    if (argv[2] == '&&') { //line 36 
    fprintf(stderr, "error%s\n", argv[2]); 
    return(1); 
    } 
} 

Я получаю сообщение об ошибке

ai.c:31:21: warning: character constant too long for its type 
ai.c: In function ‘main’: 
ai.c:31: warning: comparison between pointer and integer 
ai.c:36:21: warning: multi-character character constant 
ai.c:36: warning: comparison between pointer and integer 

Пожалуйста, помогите.

ответ

0

если сравнивать строки в C следует использовать strcmp, а также то, что Femaref сказал в попытке перейти к целому числу argc

if (strcmp (argv[4], "`tty` &") != 0) 

также для того, чтобы не получить исключение, вы должны проверить количество, если параметры в аргументах:

if(argc >=5) 
+0

большой !! он работает сейчас – Gantavya

+0

рад быть полезным @Gantavya :) –

0
  1. ARGC является внутр. Поэтому вы не можете индексировать это.
  2. Для строк вам нужны двойные кавычки.
  3. Вы должны попытаться использовать функцию strcmp/strncmp для сравнения строк.

Прочтите хорошую книгу C. Скачать здесь K & R

0

Первый '' предназначен только для символов, и вы используете его как для ввода строки. Это не сработало. Тогда вы не можете сравнивать записи строк с '==', используя strcmp. Чтобы закончить ошибку ошибки: индексируются значение не является ни массивом, ни указатель из-за использования ARGC вместо ARGV ...

вы код должен быть:

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

int main(int argc, char ** argv) { 

if (strcmp(argv[4], "`tty` ") == 0) { //line 31 
    fprintf(stderr, "error %s\n", argv[4]); 
    return(1); 
} 
if (strcmp(argv[2],"&&") == 0) { //line 36 
    fprintf(stderr, "error%s\n", argv[2]); 
    return(1); 
} 
} 
+0

thats то, что я искал – Gantavya