C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串,,求下面程序解释
#i
#include<stdio.h>
#include<string.h>//使用字符串函数时头文件
int str(char a[20],char b[20])//定义两个字符型数组
{
int i,j,k;
j=strlen(a);//测试字符串长度;
i=0;
k=j-1;
while(i<j)
{
b[k]=a<i>;//互换值;
i++;
k--;
}
return 0;
}
int main()
{
char c[20];
char d[20];
int i,l;
//gets(c);//输入字符串;
scanf("%s",c);//另一种方式;如果输入的是字符串,则不需要加地址符,因为在c语言中数组名代表该数组的起始地址;
l=strlen(c);//测试字符串长度;
str(c,d);//调用函数;
for(i=0;i<l;i++)
{
printf("%c",d<i>);//输出数值;
}printf("\n");
printf("%s",d);//直接输出字符串,此时输出的是字符数组名,而不是数组元素名;
return 0;
}
输入
一行字符
输出
逆序后的字符串
样例输入
123456abcdef
样例输出
fedcba654321
扩展资料:
scanf用法:
输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。
scanf("%s",s);改为scanf("%s",&s);
scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);
格式控制字符串包含:格式控制说明,普通字符。
1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)
2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。
3、输入的参数是变量的地址,所以要在变量前面加&。
#include<string.h>
void printit(char *str,int length) //返序输出函数
{
int i;
for(i=length-1;i>=0;i--) //从给定的字符串的最后一位依次向前遍历各字符
putchar(*(str+i)); //每向前一个字符即打印该字符,直至第一个字符为止。
}
int main()
{ char str[80]=""; //定义一个长度为80字节的字符串数组,并初始化
gets(str); //从键盘中输入一个字符串(遇回车键结束)
printit(str,strlen(str)); //调用上面定义的函数反序输出字符串
printf("\n"); //输入一个回车换行符,使后续输出能另起一行
return 0;
}