【发布时间】:2023-04-06 22:26:01
【问题描述】:
我正在编写一个函数,它接受一个由混合“o”、“g”和“c”组成的输入字符串。对于字符串中的每个字符,都会打印一个特定的符号。但是,对于 'g' 字符,id 喜欢计算字符串中一行中有多少个 g。这是我到目前为止的代码:
void printSymbol(char *str) // takes
{
int i; // counter for entire string
int k; // counter for substring ('g' char)
int count = 0; //stores amount of consecutive g's in substring
for (i = 0; str[i] != '\0'; i++) //looping until null term.
{
if (str[i] == 'o')
printf("==========\n"); //symbol for o
if (str[i] == 'c')
printf(" ~~~~~~~~ \n"); //symbol for c
if (str[i] == 'g') //if character is g
{
for(k = i; str[k] == 'g'; k++) //will loop through string starting at first g until next character is NOT g
{
count++; //count amount of consecutive g
}
printf("%d\n", count); //printing number of g's in a row
if (count % 3 == 2) //All of these if statements are printing.
printf("R==2\n");
if (count % 3 == 1)
printf("R == 1\n");
if (count % 3 == 0)
printf("R == 0\n");
count = 0; // resets count for next set of consecutive g's in string
}
}
}
我遇到的问题是它正在为 g 字符打印 for 循环中的所有 if 语句。如果一行中有 3 个 g,它将打印 R = 0,然后 R = 2,和 R = 1,因为它将循环遍历每个 g,因此余数正在变化。我该如何阻止这个?我想记录整组连续 g 的余数。所以如果有 3 个 g,我想打印 R = 0,然后重置计数器 var。
【问题讨论】:
标签: c string for-loop if-statement