可以直接使拿贺拦用库函数strrev(), 需要包含头文件string.h
#include <stdio.h>#include <string.h>
int main()
{
char buf[1024]
scanf("%s", buf)
strrev(buf)
printf("%s\n", buf)
拍磨return 0
}
strrev不是C语言的函数,自己用指针来实现也非常简单。
char *_strrev(char *str)
{
char *f = str, *l = str + strlen(str), ch
while(f<l) {ch = *f*f++ = *(--l)*l = ch}
return str
}
wchar_t *_wcsrev(wchar_t *wcs)
{
wchar_t *f = wcs, *l = wcs + wcslen(wcs), ch
while(f<l) {ch = *f*f++ = *(--l)*l = ch}
return wcs
}
对于多字符的汉字的消胡调换次序,要想得到正确的结果,必须先将多字符转换为宽字符,调换次序后再转化为多字符。
#include<iostream>#include <string.h>/兄晌/字符串 *** 作的头文件(strrev)
using namespace std
int main()
{
char input1[201],input2[201]
int i//t不需要
char output[201]={0}//清零
//先读入数据
cin>>input1
cin>>旦尘薯input2
int l1=strlen(input1),l2=strlen(input2)//取得长度
strrev(input1)strrev(input2)//字符串逆序
for(i=0i<l1i++)
input1[i]-='0'//将模者input1,input2变为数字
for(i=0i<l2i++)
input2[i]-='0'
for(i=0i<max(l1,l2)i++)
{
output[i]+=input1[i]+input2[i]//将其累加
output[i+1]=output[i]/10//若大于10,则下一位进一
output[i]%=10//这一位取个位数
output[i]+='0'//变成字符
}
strrev(output)//output逆序
cout<<output//输出
return 0
}
数组定义完,没有初始化;纯带系统会分配一段物理内存给数组,如果不初始化,就会打印旅激出乱码拆裤袜,该段内存地址有可能之前被使用过。
char i[100]={0},o[100]= {0}
结果对比:
未初始化数组
2.初始化数组
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)