C语言 问题

作者&投稿:祁心 (若有异议请与网页底部的电邮联系)
for(;*s!='\0';s++);//此处多了个;号
i++;
for(;*t!='\0';t++)
j++;

要求的是if(i<=j)
而你的是if(i<j)

还有就是正确返回的是s和t的首地址,而你在运算是s和t都变化了,应该恢复原值
可以这样:
return s-i;
return t-j;

return s; 这个返回值怎么不带*号呢?
因为函数char *fun 要求返回值是char*,就是字符串指针,如果加*就是数值了

如一楼所说
for(;*s!='\0';s++); //多个分号
i++;
for(;*t!='\0';t++)
j++;
if(i<j) => if(i<=j)

但这几个错误不是关键
关键在于你已经在for语句改变了s和t指针了,这时候s和t已经指向了原字符串的‘\0’
函数传回的指针也是指向'\0'

另 for语句
按你原来的写法可以化简成 for(;*s!='\0'; s++, i++) 虽然跟本题不符
正确的写法再简便可以是 for(;s[i++]!='\0';) 比答案的还简单点,只要别人能看得懂

ILE *fpl)这个是C语言中函数库里提供的一个库函数。
三个参数的作用:
str,Storage location for data,即读出的数据存放的位置
n,Maximum number of characters to read,即要读取的字符的最大长度
fpl,Pointer to FILE structure,即指向文件的指针
执行这个函数,如果读取数据成功,返回一个string类型的指针str,其中存储了读出的数据;
如果读取数据失败,就返回一个NULL指针,表明读取失败。
所以if(fgets(str,sizeof(str),fpI)==NULL)这行代码就是判断读取是否成功,若不成功,则要执行if函数中的语句,即 执行printf("字符串读出失败");exit(0);若成功,则执行 puts(str);
fclose(fpI);
getchar();

C语言问题~

你认为应该是多少呢?输出是正确的,其值就是a[0],它被初始化为1.1。因为fun中为s指针重新分配了指向,*s=*p1+*p2++;这一句中的s已不再指向a了。因为指针形参本身也是拷贝调用,所以main中的s仍然是指向a的,printf("%5.2f
",*s);输出自然是a[0]。可以这样验证,在fun中的*s=*p1+*p2++;后加一句printf("%5.2f
",*s);,它就应该输出11.1了……

'\xxx'类型的字符常量中,xxx代表8进制整数,其含义是某字符的ASCII码。
而\483' 里483不是合法ASCII码范围。