首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用C从命令行读取*

如何用C从命令行读取*
EN

Stack Overflow用户
提问于 2015-09-25 12:21:20
回答 1查看 81关注 0票数 2

我要直截了当地说。这是我的代码,我想从命令行参数中读取“*”字符,但是它不能正常工作。我希望你能解释我做错了什么。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int sum(int, int);
int rest(int, int);
int division(int, int);
int mult(int, int);
int module(int, int);

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

    char operator;
    int number1;
    int number2;
    int result;

    if(argc != 4){
        printf("Wrong parameter quantity (%d of 3 needed)\n", argc-1);
        return -1;
    }

    number1 = atoi(argv[1]);
    operator = *argv[2];
    number2 = atoi(argv[3]);

    switch(operator){
        case '+':
                result = sum(number1, number2);
                printf("%d %c %d = %d\n", number1, operator, number2, result);
                break;
        case '-':
                result = rest(number1, number2);
                printf("%d %c %d = %d\n", number1, operator, number2, result);
                break;
        case '/':
                result = division(number1, number2);
                printf("%d %c %d = %d\n", number1, operator, number2, result);
                break;
        case '*':
                result = mult(number1, number2);
                printf("%d %c %d = %d\n", number1, operator, number2, result);
                break;
        case '%':
                result = module(number1, number2);
                printf("%d %c %d = %d\n", number1, operator, number2, result);
                break;
        default:
                printf("Error. Wrong operator inserted (%d, %c)\n", operator, operator);
                return -2;
    }

    return 0;
}

int sum(number1, number2){
    return number1 + number2;
}

int rest(number1, number2){
    return number1 - number2;
}

int division(number1, number2){
    return number1 / number2;
}

int mult(number1, number2){
    return number1 * number2;
}

int module(number1, number2){
    return number1 % number2;
}

我知道我的错误在这一行operator = *argv[2];中,但我不知道当'*‘字符通过命令行参数传递时会发生什么。对于所有其他符号(+、-、/、%),一切都正常。我正在Ubuntu中编写这个代码,并与gcc一起在命令行中编译。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 12:30:56

问题不在你的程序里。这是你怎么称呼的。

UNIX/Linux自动将命令行上的*扩展到当前目录中的所有文件。为了防止这种情况,你需要引用它。

所以不要这么做

代码语言:javascript
复制
./prog 3 * 4

这样做:

代码语言:javascript
复制
./prod 3 "*" 4

或者这个:

代码语言:javascript
复制
./prod 3 \* 4
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32782109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档