求助指针加法的问题
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <search.h>
int search_c(char [],char);
int main(int argc,int *argv[])
{
char ch;
char character[100] = {0};
char * cp = character;
int i = 0;
FILE * p;
puts("请输入要查找的字符");
ch = getchar();
if (argc == 1)
{
puts("请输入字符串");
while (fgets((cp + i),100,stdin)!=NULL)//不断接收数据,位置移到最后字符后一位
{
i = strlen(character);//每次接收的数量
}
i = search_c(character,ch);
printf("%s 字符串里有%d个%c",character,i,ch);
}
}
return 0;
}
int search_c(char a[], char ch)
{
int i,length;
int sum = 0;
length = strlen(a);
for (i = 0;i < (length + 1);i++)
{
if (ch == a[i])
{
sum++;
}
}
return sum;
}
想法是每次看fgets获取了多少个字符,然后再从\0开始继续读取字符串直到读完。
我理解的(cp + i)并不是给cp赋值只是定位,应该每次都加上已读取的所有字符总数。
但是i = search_c(character,ch);运行正常 i += search_c(character,ch)错误,难道每次(cp + i) cp这个指针的值会变化吗?
用printf在while运行前后显示cp的值发现都是一样的,求解到底怎么回事