[英]pthread_atfork() called more than once causing after fork() functions to be called more than once
[英]Declaring variables in functions that are called more than once in int main() (in C)
如标题中所述,我要处理一个在main中多次调用的函数,其目的是对字符数组中的元音进行计数,并且仅在第一次调用时结果才正确。 之后,它不是从零开始,而是从中断的地方开始计数,从而导致错误的结果。
这是功能:
int function(char *pointer, int num_of_elements)
{
int i=0;
if (num_of_elements==0) return i;
if ((*pointer== 'a') || (*pointer== 'A') || (*pointer== 'e') || (*pointer== 'E') || (*pointer== 'i') || (*pointer== 'I' )||( *pointer=='o') || (*pointer =='O') || (*pointer== 'u') || (*pointer== 'U')) {i++;}
pointer++;
num_of_elements--;
return function(pointer,num_of_elements);
}
指针指向字符数组,变量i为计数器。
您必须返回i
的总和以及function
的递归调用的结果。 像这样修改您的代码:
#include <ctype.h>
int function(char *pointer, int num_of_elements)
{
if (num_of_elements==0)
return 0;
char c = tolower( *pointer );
int i = ( c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ) ? 1 : 0;
pointer++;
num_of_elements--;
return i + function( pointer, num_of_elements );
}
我建议循环解决您的问题,并使用tolower
函数:
#include <ctype.h>
int function(char *pointer, int num_of_elements)
{
int count = 0;
for ( int i = 0; i < num_of_elements; i++, pointer ++)
{
char c = tolower( *pointer );
if ( c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' )
count ++;
}
return count;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.