簡體   English   中英

為什么我得到了錯誤的輸出,我該如何解決?

[英]Why did I get the wrong output and how can I fix this?

我試圖編寫一個程序來計算給定字符串中給定字符的出現次數。

這是程序:

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

int find_c(char s[], char c)
{
    int count;
    int i;
    for(i=0; i < strlen(s); i++)
        if(s[i] == c)
            count++;
   return count;
}

int main()
{
    int number;
    char s[] = "fighjudredifind";
    number = find_c(s, 'd');
    printf("%d\n",number);
    return 0;
}

我期待以下輸出:

3

因為字符串s中字符“ d”的出現次數為3。

每次我嘗試運行該程序時,屏幕上都會顯示一個不同的數字。 例如,一次運行該程序時得到以下輸出:

-378387261

並在再次運行該程序時得到了此輸出:

141456579

為什么我得到了錯誤的輸出,我該如何解決?

提前致謝!

在C中,整數不會自動初始化為零。 問題是count變量未初始化。
嘗試將find_c函數中的count變量初始化為零。

好吧,您的代碼是好的。 唯一的錯誤是,您沒有將計數初始化為0。如果不初始化,變量將保存垃圾值,並且您將對該值執行操作。 結果,在較早的情況下,每次執行程序時,您都會獲得所有垃圾值。

這是代碼:

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

int find_c(char s[], char c) {
  int count=0;
  int i;
  for(i=0; i < strlen(s); i++)
    if(s[i] == c)
      count++;
      return count;
}

int main() {
  int number;
  char s[] = "fighjudredifind";
  number = find_c(s, 'd');
  printf("%d\n",number);
  return 0;
}

暫無
暫無

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

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