亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

輸入:- I Love India 輸出:- I1 Love4 India5

輸入:- I Love India 輸出:- I1 Love4 India5

米脂 2022-07-14 10:41:05
我在這段代碼中做錯了什么?將輸入作為一個字符串。然后打印每個單詞的長度。例如,i 的長度是 1,Love 的長度是 4,所以在每個單詞之后打印長度。包括包括int main(){    int i,n,count=0;    char str[20];    gets(str);    n=strlen(str);    for(i=0;i<n;i++){        if(str[i]==" "){            printf("%d",count);            count=0;        }else{            printf("%c",str[i]);            count++;        }    }    return 0;}
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

線路if(str[i]==" "){錯了。

" "是一個字符串,它由兩個字節組成:空格字符和終止 NUL 字符。

你應該if(str[i]==' '){改用。

' '是一個字符,你應該將它與str[i], 這也是一個字符進行比較。


此外,您似乎忘記在數字后打印空格字符。


還有一點是,即使最后一個單詞后面沒有空格字符,您也應該打印最后一個單詞的長度。


順便說一句,您不應該使用gets(),它具有不可避免的緩沖區溢出風險,在 C99 中已棄用并從 C11 中刪除。您應該使用fgets(), 取而代之的是緩沖區大小。 fgets()將讀取的換行符保存到緩沖區,gets()而不保存,因此如果您不想要換行符,則應刪除它們。


更正代碼的示例:


#include <stdio.h>

#include<string.h>


int main()

{

    int i,n,count=0;

    char str[20 + 1]; // allocate one more character for a newline character

    char* lf; // for searching for a newline character

    fgets(str, sizeof(str), stdin); // use fgets() instead if gets()

    if ((lf = strchr(str, '\n')) != NULL) *lf = '\0'; // remove a newline character if one exists

    n=strlen(str);

    for(i=0;i<=n;i++){ // change < to <= for processing the terminating NUL character

        if(str[i]==' ' || str[i]=='\0'){ // compare with a character, not a string

            if (count>0) printf("%d",count); // avoid duplicate printing for duplicate space characters

            if(i+1<n) printf(" "); // print a space if the string continues

            count=0;

        }else{

            printf("%c",str[i]);

            count++;

        }

    }


    return 0;

}


查看完整回答
反對 回復 2022-07-14
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

代碼中的幾個問題:

  • 將字符與字符串文字進行比較。

  • 打印特定單詞及其長度后沒有空格。

  • 對于最后一個詞,比較必須使用空終止符。

  • for在循環的條件檢查中不考慮空終止符。

進行這些更改,您將獲得所需的輸出。

演示在這里。

注意: gets已棄用并認為使用起來很危險。改為使用fgets。


查看完整回答
反對 回復 2022-07-14
  • 2 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號