[英]Why does my letter counter display 0 when put in a function
我是 C 的新手,我正在嘗試為字母“a”在字符串中出現的次數創建一個計數器。 我通過將它直接放入 main 使其工作,但是當我將它放入 function 時,我的 printf 輸出 0。
#include <stdio.h>
#include <string.h>
#define STRING_LENGTH 50
void letter_counter(char input[STRING_LENGTH], int count, char letter ) {
int i;
for (i = 0; i < strlen(input); i++){
if (input[i] == letter) {
count++;
}
}
}
int main() {
int a1 = 0;
char a = 'a';
printf("Please write a word\n");
char input[STRING_LENGTH] = {0};
fgets(input,STRING_LENGTH,stdin);
input[strlen(input) - 1] = 0;
letter_counter(input, a1, a);
printf("%i\n", a1);
}
您沒有返回您所計算的價值。 看起來您認為a1
將包含總數,但事實並非如此。
您的letter_counter
function 需要返回一個int
值,而不是void
。
int letter_counter(char input[STRING_LENGTH], char letter ) {
int i;
int count = 0;
for (i = 0; i < strlen(input); i++){
if (input[i] == letter) {
count++;
}
return count;
}
然后你需要將 function 的返回值賦給一個變量:
a1 = letter_counter(input, a);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.