2012-03-31 1 views
0

// Моя программа предполагает взять операцию и буксировать номера из командной строки и применить // операцию по двум номерам, но результат всегда неправильный. Почему?У меня проблемы с использованием параметров командной строки

#include "stdafx.h" 
#include<stdio.h> 
#include<tchar.h> 
#include<stdlib.h> 

int main(int argc, char*argv[]) 
{ 
    if(argc !=4) 
    { 
     printf("number of CLP is incorrect\n"); 
     return 0; 
    } 

    int num1 = atoi(argv[2]); 
    int num2 = atoi(argv[3]); 
    int res ; 

    if(argv[1] == "+") 
     res = (num1 + num2); 

    else if(argv[1]=="-") 
     res = (num1-num2); 

    else if(argv[1]=="*") 
     res = (num1*num2); 

    else if(argv[1]=="/") 
     res = (num1/num2); 

    printf("You enterd Operation %s and the Resualt = %d\n" , argv[1] , res); 
    return 0; 
} 

это мой код, и если есть лучший способ сделать это, дайте мне знать.

+0

Какую отладку вы сделали? Вы напечатали num1 и num2, чтобы убедиться, что это то, что вы ожидаете? – Corbin

+0

Да, я сделал, и они были неправы, но я не знаю почему? – Lara

+0

Вы проверили, что argv [2] и 3 - это то, что вы ожидаете? Кроме того, strtol может быть более полезным для проверки ошибок. – Corbin

ответ

3

Вы не можете сравнить строки с == Используйте if(strcmp(argv[1], "+") == 0) и аналогичным образом в остальной части кода.

+0

О, ничего себе! Как я не заметил этого! \ * hides \ * – Corbin

+0

@Corbin Greats слишком медленно проскальзывает. Это нормально, я думаю ;-) –