gpt4 book ai didi

c - 程序显示字符串中的字符数

转载 作者:行者123 更新时间:2023-11-30 14:27:37 26 4
gpt4 key购买 nike

这是一个查找字符串中字符数的程序。但它计算的字符数是错误的。它也计算空白吗?即使这是真的,总数怎么可能是89? (见下面的输出)

#include <stdio.h>
#include <conio.h>


void occurrence(char str[100], char ch)
{
int count=0,max =0,i;
for(i=0;i<=100;i++)
{
if(str[i]!='\0')
{
max = max + 1;

if(str[i]==ch)
{
count = count + 1;
}
}
}

printf("\nTotal Number of characters : %d\n",max);
printf("\nNumber of Occurrences of %c : %d\n",ch,count);
}

int main(void)
{
void occurrence(char [], char);
int chk;
char str[100], ch, buffer;

clrscr();
printf("Enter a string : \n");
gets(str);

printf("Do you want to find the number of occurences \nof a particular character (Y = 1 / N = 0) ? ");
scanf("%d", &chk);

do
{
if (chk==1)
{
buffer = getchar(); //dummy varaiable to catch input \n
printf("Enter a Character : ");
ch = getchar();
occurrence(str,ch);
printf("\n\nDo you want to check the number of occurences \nof another character (Y = 1 / N = 0) ? ");
scanf("%d", &chk);
}
else
{
exit();
}
}
while(chk);

return 0;
}

enter image description here

最佳答案

for 有两个重要的问题计算字符数的循环:

  1. 它从 0 到 100,而它应该从 0 到 99。如果分配一个 100 个元素的数组,那么最高元素的索引是 99,总共有 100 个元素。传统上,循环的退出条件是 i < 100 ,不是i <= 100 .

  2. 找到“\0”后继续进行。 '\0' 字符标记字符串的结尾,不应计算其后面的任何字符。 '\0'后面的一些字符可能本身就是'\0',所以你不会计算它们;但那里也可能有任何其他类型的垃圾,这些垃圾会扰乱你的计数。您必须弄清楚如何更改您的 for一旦找到“\0”字符,循环就退出,并且不计算该点之后的任何其他内容。

关于c - 程序显示字符串中的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com