簡體   English   中英

在Java中,scanf,memset和C ++的一些含義是什么?

[英]What does scanf,memset, and a couple while's in C++ mean in Java?

因此,我一直在努力理解算法,並在互聯網上找到了該算法的C ++代碼,但問題是我知道Java,但實際上並不熟悉C ++,因此在理解它時遇到了一些麻煩。 這部分特別是:

int m, i, j, len;
char temp[50];
char stuff[100][100];


while(scanf("%d",&m)!=EOF)
{
    while(m--)
    {
        scanf("%s",temp);

        len = strlen(temp);
        for(i=0;i<=len;i++)
            for(j=0;j<=len;j++)
                memset(stuff[i][j],0,sizeof(char)*4);

    }
}

好的,這就是我在思考我不了解的部分。 如果有人能告訴我我是否走對了,我將非常感激。

while(scanf("%d",&m)!=EOF)

對於這一部分,由於沒有輸入文件或類似的東西,並且m尚未初始化。 我認為這意味着它將接受用戶輸入的整數或雙精度數,直到在控制台中給出EOF字符為止。 該輸入將另存為m。 我只是對while循環感到困惑。 正在進行中嗎? m只是一個整數,所以我不太了解。

while(m--)

就像for(i = m; i> = 0; i--)?

scanf("%s",temp);

    len = strlen(temp);
    for(i=0;i<=len;i++)
        for(j=0;j<=len;j++)
            memset(stuff[i][j],0,sizeof(char)*4);

因此,如果m在遞減,它想以字符串形式(但實際上是一個char)從控制台獲取用戶輸入,並將每個char保存到temp []的下一個索引中? len是該數組中實際已初始化的字符數嗎? 這是否意味着len == m? 然后memset只是將每個第3維數組的4個索引設置為null?

我在這里期望的是用戶輸入要保存在temp中的n個字符的序列,然后根據序列中有多少個字符,准備3d填充東西[n] [n] [4]的數組,並全部填充零。 只是while語句對於僅接受基本上是字符串的內容似乎有點多余。

任何幫助都會很棒。 之前我從未用C ++做過任何事情,除了最后一部分,我已經弄清楚了。 很抱歉,這已經很長時間了,但是我正試圖展示我的想法。

Java和c語法相距不遠,如果您知道Java,則應該在閱讀本文時遇到麻煩。 while循環,for循環,每個循環附帶的代碼塊以及變量前后的增/減量幾乎相同。

scanf()是一個復雜的野獸,但是您已經了解了它的使用方式……它從標准輸入路徑讀取,並且在您的情況下,它讀取一個整數(%d表示int; google“ man scant “以獲取完整的詳細信息),將其放入m 您有一個循環來讀取此輸入,然后根據新值m執行代碼塊。

while (m--)塊就像您建議的for循環一樣,它在Java中也以相同的方式工作。

scanf("%s")讀取一個字符串,而不僅僅是一個字符……該字符串將以NULL終止,但不能保證(不做更多的事情)輸入不會超出緩沖區的大小( temp )。

strlen()返回字符串的長度(不包括NULL終止)。

memset(buffer, value, length)buffer開始將value寫入內存,總共為length個字節。 Google的“ man memset”文檔。

首先, scanfprintf是大多數在C中使用的命令,盡管它們也可以在C ++中使用。

至於那while(m--)

for (int i = m; i > 0; i--)

while(scanf("%d",&m)!=EOF)

將整數讀取為m輸入,直到沒有輸入剩余為止。

while(m--)

是的,完全等同於for(; m>=0; m--)

因此,如果m在遞減,它想以字符串形式(但實際上是一個char)從控制台獲取用戶輸入,並將每個char保存到temp []的下一個索引中? len是該數組中實際已初始化的字符數嗎? 這是否意味着len == m? 然后memset只是將每個第3維數組的4個索引設置為null?

該代碼將一些文本讀入temp (一個char數組)。 strlen(temp)確定在文本多久temp是(它計數前進,直到它看到零char ,它是一個文本串是如何用C終止)。 所以不, len != m 而且您對memset的角色是正確的。

我在這里期望的是用戶輸入要保存在temp中的n個字符的序列,然后根據序列中有多少個字符,准備3d填充東西[n] [n] [4]的數組,並全部填充零。

是的,這正是發生的情況。

暫無
暫無

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

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