在学习C语言,遇到一个问题,如下: 由于用fgets()函数读取字符串时,会读取换行符,编一个函数,将换行符换成‘\0’, 并且去掉多余的字符,即s_gets() 函数。
我自己变得程序如下:
#include<stdio.h> // s_gets
#define L 5
char *s_gets(char *ptr, int n);
int main(void)
{
char ch[L];
puts("enter a word:");
s_gets(ch,L);
fputs(ch,stdout);
puts("****");
return 0;
}
char *s_gets(char *ptr, int n)
{
char *p1;
int i=0,j;
p1=fgets(ptr,n,stdin);
if(p1)
{
while(*p1!='\n'&& *p1!='\0')
p1++;
if(*p1=='\n')
*p1='\0';
else
while(getchar()!='\n')
continue ;
}
return p1;
}
这个 程序 可以不用这么写,可以用*ptr 替换 *p1, 现在 我就想就我这个程序,问一下 关于return 的问题:
在 char *s_gets(char *ptr, int n) 中,运行到最后,指针P1 指向的是 ptr字符串的末尾 '\0'.
如果 return 返回的话 应该返回 return p1-n ; 才对。
但是 程序奇怪的是 return p1 ; return p1-5 ; 甚至 不写 return 这一项,结果都是对的。
我想问的是,难道这个调用函数 不需要return 吗?
到底 什么时候 需要return , 什么时候不需要?
谢谢!