日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

main函数参数,在VS中向命令行添加参数的方法

發布時間:2023/11/27 生活经验 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 main函数参数,在VS中向命令行添加参数的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

使用main函數的參數,實現一個整數計算器,程序可以接受三個參數,第一個參數“-a”選項執行加法,“-s”選項執行減法,“-m”選項執行乘法,“-d”選項執行除法,后面兩個參數為操作數。
例如:輸入test.exe
?-a?1?2
??????執行1+2輸出3

問題分析

上面的邏輯思維很簡單,但是問題在于如何在VS中向main函數傳遞參數,即如何使用命令行參數,以及具體怎么傳參

解決方法

這里我直接給代碼,結合代碼進行解釋說明

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include<windows.h>int main(int argc, char *argv[])
{int sum = 0;int num1 = atoi(argv[2]);int num2 = atoi(argv[3]);if (strcmp(argv[1], "-a") == 0){sum = num1 + num2;}else if (strcmp(argv[1], "-s") == 0){sum = num1 - num2;}else if (strcmp(argv[1], "-m") == 0){sum = num1 * num2;}else if (strcmp(argv[1], "-d") == 0){sum = num1 / num2;}printf("%d\n", sum);system("pause");return 0;
}



main函數也是可以傳遞參數的,這里使用了可變參數列表的知識,關于這方面的知識,大家可以自行了解,下面需要給大家看看如何在VS中給main函數傳參數。

右鍵單擊要 添加參數的工程-->屬性-->配置屬性-->調試,在右側“命令參數”欄輸入要添加的參數,各參數間用空格分離,比如我上面傳參數時,可以傳遞-a 2 4。如圖


我們看main函數的函數聲明部分

int main(int argc, char *argv[])

上面的傳入兩個參數,其中int argc的值會根據咱們傳遞的參數自動賦值,這里我們不需要管他,我們需要需要傳遞的參數只有下面的字符串。而*argv[]就是剛剛傳入的字符串,上面我傳入了-a 2 4,那么argv[1]的值為"-a",注意這里數組下標從1開始,argv[2]的值是2,argv[3]的值是4,這樣就不難分析我上面的代碼了。這里補充說明一下,main函數傳入的是字符串,但是我們要對整型進行相加減,上面使用了一個這個的作用是把字符串轉化成數字。

int main(int argc, char *argv[])

問題拓展

1.這里我們會出現一些傳參失誤,或者我多傳入幾個參數會是怎樣的結果呢,比如我傳入的參數是-a 2 4 -s 2 5,那么結果會怎么樣,還是我上面的程序,這里只是把argv[1]到argv[6]分別賦值了上面的參數,但是我并沒有使用argv[4]和他以后的內容,所以程序跑起來沒有太大的問題。

2.這里又有一個疑問,我們意識里面的數組不是下標從0開始嗎,為什么上面直接從1開始了呢,對于這個疑問,解決的方法也很簡單,我們既然知道參數是字符串,那么我們把argv[0],和argv[1]打印出來不就好了嗎,這里我傳入的參數是-a 2 4,請看代碼

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include<windows.h>int main(int argc, char *argv[])
{printf("%s\n",argv[0]);printf("%s\n", argv[1]);system("pause");return 0;
}
請看輸出的結果


根據圖中的結果我們不難發現,argv[0]存放的是程序所在的路徑字符串,argv[1]放的是第一個參數,而其他的參數我沒有打印出來。這里我們還明白了一個問題,就是main函數中的另一個參數int argc的值,系統會自動識別,值是參數個數加1,這個1對應的就是路徑參數。

總結

以上是生活随笔為你收集整理的main函数参数,在VS中向命令行添加参数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。