C语言指针问题~~

程序如下#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){inti,j=0,k;char*c;k=st... 程序如下
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{int i,j=0,k;char *c;
k=strlen(s);
for(i=0;i<k;i++)
if(i%2!=0)
{t[j++]=s[i];
}
t[j]=*\0*;

}

main()
{
char s[100], t[100];
void NONO ( );
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
NONO();
}

void NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
char s[100], t[100] ;
FILE *rf, *wf ;
int i ;

rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s) ;
fun(s, t) ;
fprintf(wf, "%s\n", t) ;
}
fclose(rf) ;
fclose(wf) ;
}
我的问题是 为啥strlen(s)中的s不能换做*s?????? 谢谢~
展开
 我来答
帐号已注销
2014-09-18 · TA获得超过103个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:158万
展开全部
strlen()的参数就是要求是char*的指针。。*s的类型就是一个char。。。如果硬是strlen(*s)这样子调用,那么会把*s当做指针,其中的值当做地址(粗略认为与指针相当)传递给strlen(),也许程序执行不会出错,值可能凑巧对,但是逻辑上是不正确的。顺带说句,strlen就是从你传递的指针所指向内容开始数,直到零结束,此时数过的字符(字节)个数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-07-08
展开全部
可以好好读下《C与指针》这本书。
strlen()函数是求字符串长度的,参数是字符串指针,char *s,这里s是字符串指针,*s表示的是字符串的第一个值。

例子:char *s = ”hello“;这里s就代表整个字符串,*s ==‘h’
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
娱乐文风
2020-04-25 · 贡献了超过121个回答
知道答主
回答量:121
采纳率:100%
帮助的人:5.8万
展开全部

30分钟彻底学会C语言指针

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式