【发布时间】:2015-03-27 05:49:36
【问题描述】:
在这段代码中,除了 main 之外,我还有一个函数,它在字符串(句子)中查找特定字符并返回指向它的指针,否则返回 NULL:
char *position (char letter, char *sentence){
int i=0;
while (*(sentence+i) != '\0') {
if (toupper(*(sentence+i)) == toupper (letter))
return (sentence+i);
++i;
}
return NULL;}
这里我都清楚了。
在主函数中,我必须使用前一个函数(位置)来查找特定字母在特定句子中出现的次数。
int main (void){
char sentence [200+1];
char letter;
char *pos = sentence;
int counter=0;
gets(sentence);
scanf("%c", &letter);
while (pos != NULL){
pos = position (letter, pos);
if (pos != NULL){
++counter;
pos +=1;
}
}
return 0;
}
我不清楚 pos 变量在设置后究竟是什么以及最后的 while 循环如何工作?
编辑:忘记在function() 中初始化变量i,谢谢指出
【问题讨论】:
-
你没有在
position()中初始化i。 -
pos通过指针运算递增。是字符串中的当前位置。 -
不要使用
gets(),而是使用fgets()。
标签: c arrays pointers while-loop