1. 程式人生 > >如何用 linux 實現命令列引數(可變引數實現)

如何用 linux 實現命令列引數(可變引數實現)


僅用main函式的引數實現一個整數計算器

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

void usage(const char *proc)
{
	printf("Usage: %s [-a|s|m|d] data1 data2\n", proc);
}

int main(int argc, char *argv[])
{
	if (argc != 4){
	 usage(argv[0]);
	 return 1;
	}

	int data1 = atoi(argv[2]);
	int data2 = atoi(argv[3]);

	if (strcmp("-a", argv[1]) == 0){
	 printf("%d + %d = %d\n", data1, data2, data1 + data2);      //-a   執行加法
	}
	else if (strcmp("-s", argv[1]) == 0){
	 printf("%d - %d = %d\n", data1, data2, data1 - data2);     //-s    減法
	}
	else if (strcmp("-m", argv[1]) == 0){
	 printf("%d * %d = %d\n", data1, data2, data1*data2);       //-m   乘法
	}
	else if (strcmp("-d", argv[1]) == 0){
	 if (data2 == 0){
	 printf("div data is zero!!\n");                              //-d     除法
	 return 2;
	 }
	 printf("%d / %d = %d\n", data1, data2, data1 / data2);
	}
	else{
	 usage(argv[0]);                                             //其他
	 return 3;
	}
	return 0;
}


執行結果:

[
[email protected]
桌面]$ ./text Usage: ./text [-a|s|m|d] data1 data2 [[email protected] 桌面]$ ./text -a    20 30 20 + 30 = 50 [[email protected] 桌面]$ ./text -d    20 30 20 / 30 = 0 [[email protected] 桌面]$ ./text -s    20 30 20 - 30 = -10 [[email protected] 桌面]$ ./text -m    20 30 20 * 30 = 600 [[email protected]
桌面]$ ./text -p    20 30 Usage: ./text [-a|s|m|d] data1 data2

相關推薦

如何用 linux 實現命令引數可變引數實現

僅用main函式的引數實現一個整數計算器 #include <stdio.h> #include <string.h> #include <stdlib.h>

Linux常用命令學習不斷補充...

建立資料夾 mkdir <資料夾名稱> 列出當前路徑下的資料夾和檔案 ls /*(list)簡單列出當前路徑下的資料夾和檔案*/ ls -l /*列出當前路徑下資料夾和檔案(包括作者、許可權、建立時間等詳細資訊)*/ 進入當前路徑下的資料夾 cd <資料夾名

Linux常用命令彙總2

15、使用gnome-screenshot實現螢幕截圖 使用gnome-screenshot實現延時10秒螢幕截圖。輸入下面命令,然後開啟Applications/Accessories/Text Editor 方法:gnome-screenshot -d 10 16、使用

linux基礎命令總結更新幹貨!

路徑 可視化 版本 use con 查看文本 端口號 basename 輸出 alias:查看命令別名(別名只針對用戶有效) alias h=hostname(定義別名) cdnet=‘cd /etc/sysconfig/network-

Linux命令及三劍客grep sed awk

txt 當前 修改 刪除 root alex bak 過濾 dbo 令的介紹1.1 mv 修改兼移動命令1.1.1 移動命令mv 1.1.2 修改命令mv[root@oldboy ~]# mv oldboy.txt oldgirl.txtmv: cannot stat

嵌入式命令操作可移植性

本文件基於stm32f103並移植到F407, MSP430,以及s3c2440 最終效果如下: 以上多餘列印是除錯時解析bug用的,可以去除。 本文參考u-boot命令列,重點部分有三個:①資料定義 ②獲取串列埠資料(1個位元組) ③解析資料 資料定義 typedef v

Java中不定項引數可變引數的作用和使用方式

引言:   我們在編寫方法的過程中,可能會遇見一個方法有不確定引數個數的情況。一般我們會用方法過載來解決問題: //方法過載,解決引數個數不確定問題 public void method(); public void method(int i); public void method(int

sqlplus 命令格式set,col等

SQL*PLUS(或 稱sqlplus)裡除了我們經常使用的sql語句外,還有另外一些命令,它們通過對標題、列標題、頁寬、頁長以及時間等引數的格式化操作來控制sql語 句的輸出的內容和格式,常見的比如"set timing on”,"set heading off”等。 基本的SqlPlus命令

sqlplus 命令格式set,col等

QL*PLUS(或 稱sqlplus)裡除了我們經常使用的sql語句外,還有另外一些命令,它們通過對標題、列標題、頁寬、頁長以及時間等引數的格式化操作來控制sql語 句的輸出的內容和格式,常見的比如"set timing on”,"set heading off”等。

Go語言基礎十一—— 實現命令引數對資料的簡單查詢小案例

案例要求: 結合命令列引數、複合型別、包管理、排序等知識,寫一個商品管理系統 商品屬性包括:整型商品ID(gid)、字串型名稱(name)、整型類別(cid)、浮點型價格(price) 自己造一些假資料,實現如下功能: shop.exe -cmd single -gi

get_optlong用法linux解析命令引數

const char * const shor_options = “ho:v” ;struct option 型別陣列該資料結構中的每個元素對應了一個長選項,並且每個元素是由四個域組成。通常情況下,可以按以下規則使用。第一個元素,描述長選項的名稱;第二個選項,代表該選項是否需要跟著引數,需要引數則為1,反

關於Arch Linux efibootmgr 命令引數問題

相關連結: https://wiki.archlinux.org/index.php/EFISTUB   今天安裝Arch Linux 在 efibootmgr建立啟動項時,總是提示 UUID=xxxx not found 找不到裝置的錯誤,無法啟動系統   官方文件對這個命令的說

Mac/Linux 配置多版本Java,並實現命令快速切換

0. 目標 使用簡單快捷的命令列,快速的切換本機的Java環境 1. 下載JDK 1.8:官網下載; 1.7:https://pan.baidu.com/s/1iCWtZhK_E-KYwZJcMqQ-mQ 2. 安裝JDK 一路next 安裝完成的路徑:

Golang 讀取作業系統命令控制檯傳入的引數列表os.Args的多種方式

方法一 /root/code/go/src/contoso.org/book/main.go package main import (     "fmt"     "os"     "reflect"     "strings" ) func main() {     

Linux/Unix 命令選項前的一橫-、兩橫--和沒橫

在使用 Linux/Unix 命令的時候,我們可能會對其五花八門的選項表示形式感到困惑,比如: ls -l ls --size ps aux 我們可以發現,這三個命令的選項都有不同的風格,有的是一個

python測試例覆蓋率工具coverage教程(命令工具)

歡迎大家光臨我的部落格 簡介 coverage是一個檢測單元測試覆蓋率的工具,即檢查你的測試用例是否覆蓋到了所有的程式碼。 coverage命令列工具   當你通過pip install coverage成功安裝完coverage後,就會在pytho

linux 常用命令持續更新

linux 常用命令列(持續更新) 1、使用pid查詢埠號 sudo netstat -antup|grep PID號 2、查詢埠號所有情況 sudo netstat -antup    3、啟動、重啟、關閉tomcat伺服器,若沒有許可權則加sudo service tomc

C程式設計--命令引數argc 和 argv[]

概念 命令列引數是使用 main() 函式引數來處理的,其中,argc 是指傳入引數的個數,argv[] 是一個指標陣列,指向傳遞給程式的每個引數。 具體寫法:int main(int argc,char* argv[ ]) //注:main()括號內是固定的寫法。 或者寫成:int

linux命令連線FTP是遇到的錯誤425 Failed to establish connection

linux下命令列連線FTP是遇到的錯誤(425 Failed to establish connection) 首先FTP的執行模式有主動模式和被動模式兩種 然後筆者在工作中搭建了ftp,但是沒有開啟他的被動模式。 然後server端的防火牆開放了21埠。 因此客戶端能連上server,但是輸入命令

Linux的基本命令操作精簡版

Linux操作命令太過強大了,命令數量也居多在本文最下方有下載       Linux命令集文件資料供分享下載            下載地址:http://download.csdn.net/det