不管输入什么输出都是256,原本是用来计算字符串长度的

#include
int main()
{int slen(int *p);
int *p;
char s[1000];
p=s;
printf("请输入字符串:");
gets(s);
printf("该字符串长度为:%d",slen(p));
return 0;
}

int slen(int *p)
{int l=0;
for(;*p!='\0';p++)
l++;
return l;
}

您好,很高兴能为您解答:
(1)您的slen()函数未写出来,估计是有问题,对于字符串测长度,C可以采用内置strlen函数,用法不赘述
(2)您的指针可能有指向错误,而且完全没有必要使用。
(3)由于您从文件读入,建议使用fgets

用fgets代替gets

我没看错吧:关键的slen()函数是怎么定义的,你的代码中不给出来,别人肯定不知道是出了什么错误。
看起来是slen()输出了固定的值。

这个问题的解决思路偶一般是:
(1)先看是否正确获取到输入的字符串,例如:使用 printf 将输入的字符串回显出来。
(2)再看字符串长度计算函数,将 *p 的数值也用 printf 输出。

这样任何位置出来错误,都能及时发现并解决。

计算字符串长度可以直接用内置函数“strlen()”即可。
而且没有必要非要用指针呀,反而麻烦啦,直接对字符串处理就可以啦,只要读到'\0'就计算前面字符的个数并返回。

int strlen(const char *str)
{
  assert(str != NULL);
  int len = 0;
  while((*str++) != '/0')
len++;
  return len;
}