[英]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.