簡體   English   中英

c中的“ argv ['A']”是什么意思?

[英]What is the meaning of “argv['A']” in c?

我找到了以下代碼,但我不明白它是什么或如何工作。 我以前只在C中看過argv[n] (帶有整數索引的argv),從未見過像argv['A']這樣的字符文字。

if(argc != 100) return 0;
if(strcmp(argv['A'],"\x00")) return 0;
if(strcmp(argv['B'],"\x20\x0a\x0d")) return 0;
printf("Stage 1 clear!\n");

這是做什么的? 您能解釋一下它為什么起作用嗎?

從技術上講,這在C語言中對於訪問argv( argv[65] )的元素有效。

編輯 :正如John Ballinger在評論中指出的那樣,僅當您的C實現將字符文字映射到其ASCII值時,這才是標准要求的。 但是,大多數C實現都這樣做,因此我假設代碼的作者正在使用此假設。

這是因為在C語言中,所有字符文字都可以充當數字文字。

當然,如果您期望argv中有65個以上的元素,則可能是錯誤的。 即便如此,除非您將argv與字母進行特定的關聯,否則將65和66用作索引的'A''B'是沒有意義的。

TL; DR它是一個索引,但是代碼異常異常,並且可能被故意混淆了

'A'只是用int類型指定值的一種方法(假設您已經傳遞了字母數字字符,則必須能夠將其適合平台上的char 。)該值是實現定義的,盡管使用ASCII ,是65歲。

所以argv['A']就像int n = 'A'; argv[n]; int n = 'A'; argv[n];

程序是否配備了這么多的命令行參數( argc會告訴您,並且if(argc != 100)不夠充分)是另一回事。

綜上所述,可以在C語言中從自身調用main 也許然后引入命令行參數,作為混淆的練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM