C语言中带有中文的字符串怎么翻转

作者&投稿:尚云 (若有异议请与网页底部的电邮联系)
c语言如何实现字符串按位翻转~

如果所说的是字符串的反转操作是很方便的,只要使用一个辅助单元就可以实现:
char s[200],i,j,c;
gets(s);
for(j=0;s[j];j++);
for(i=0;i<j;i++,j--)
{c=s[i];s[i]=s[j];s[j]=c;}
puts(s);

这个需要具体看编译器中汉字的编码情况,汉字编码是2至4个字节,我是手机编译器,汉字编码是3个字节,参考代码如下:
#include
char *str = "你好123哈哈456";
int main()
{
int i;
for(i=0;str[i]!=0;++i)
if(str[i]>127){
printf("%c%c%c
",str[i],str[i+1],str[i+2]);
i+=3-1;
}
else printf("%c
",str[i]);
return 0;
}

看中文字符编码

windows一般是gbk

两个字节 作为一个汉字,第一个字节必然是0xA0以上的。

遇到这种 把两个字节作为一个整体进行翻转。 

对于带汉字的,用一个字符串进行翻转比较麻烦

最好用另一个字符串进行存储。 

void reverse_with_chinese(char *s)
{
    char *p;
    int len = strlen(s);
    int i,t;
    p = (char *)malloc(len+1);
    p[len]=0;
    t=len;
    for(i = 0; s[i]; )
    {
        if(s[i]>0xA0)//汉字
        {
            p[t-1] = s[i];
            p[t]=a[i+1];
            t-=2;
            i+=2;
        }
        else
        {
            p[t--]=s[i++];
        }
    }
    strcpy(s,p);
    free(p);
}


#include<iostream>
using namespace std;
void reve(char *s) //逆序(带中文)字符串
{
if (!*s) return;
int i, t,len = strlen(s);
char *p = (char *)malloc(len + 1); //申请堆空间存放字符串
for (i = 0, t = len - 1; s[i]; )
{
if (s[i]>0)//非汉字
p[t--] = s[i++];
else
{
p[t - 1] = s[i];
p[t] = s[i + 1];
t -= 2;
i += 2;
}
}
memcpy_s(s,len,p,len);
free(p); //释放堆空间
}
int main()
{
char a[40] = { "abcde12345我也试下是不是真的!haha!" };
reve(a);
cout << a << endl;
}//楼上这样修改会好点,用的是c++头文件,可自行查找对应的c语言头文件更换。
//使用vs2017版测试ok。


中文、汉语、华语、普通话、国语有什么区别?
中文:就是汉字,不论简繁。理解中既包括汉语言,也包括文字,而更多的时候指的就是普通话,比如有人遇到外国人,听到他会说普通话,我们常听人们这样说,“你的中文讲的真好”,在这里就说的是语言,而不是文字。汉语:汉族的语言,包括官话了、粤闽吴客湘赣晋等。华语:主要是华侨对汉语的俗称。普...

为什么日语中很多汉字?
日语中的中文字,很多都已经改变了原本的意思,比如说主人二字,对应的日语意思就是丈夫,手纸就是信,娘是女儿的意思等等,但是中国汉字对日本母语的影响之大,是没有人可以否认的。

中文包括什么语言?
中国大陆、中国港澳的“普通话”、中国台湾的“国语”、海外华人华侨的“华语”大体上是相同的,只在个别字词的读音上有些微区别。此外,中国台湾、中国香港、中国澳门是以繁体中文为主要文字的地区。汉语是联合国的六种官方语文之一,亦为当今世界上作为母语使用人数最多的语言。除中国外,新加坡和马来西...

中文,汉语,华语,普通话,国语有什么区别
1、中文:就是汉字,不论简繁。理解中既包括汉语言,也包括文字,而更多的时候指的就是普通话,比如有人遇到外国人,听到他会说普通话,我们常听人们这样说,“你的中文讲的真好”,在这里就说的是语言,而不是文字。2、汉语:汉族的语言,包括官话了、粤闽吴客湘赣晋等。3、华语:主要是华侨对汉语...

我国有几种文字?
中国有约30种文字。包括中文、西夏文、彝文、东巴文、水书、藏文、蒙古文等。1、中文:是中国的语言文字。特指汉族的语言文字,即汉语和汉字。在汉字文化圈和海外华人社区中,中文也被称为华文、汉文。2、西夏文:西夏文又名河西字、番文、唐古特文,是记录西夏党项族语言的文字。3、彝文:彝文指的是...

为什么亚洲很多国家的语言中含有汉字?
而当这种没有“灵魂”的“空壳”文字演变成为只表示发音不表示本意的注音文字时,拼音文字就产生了。如英文字母“A”最初表示“牛”,但当“A”被外来文化用来记录外来语言时,“牛”的本意便消失了,而仅仅表示“A”这个发音。这样,原本的象形文字就逐渐演变成了只表音而不表意的字母,从而逐渐产生...

日本语言中的中文字是什么意思?
你个小白!日本原本只有语言,没有文字的,是汉字输入日本以后,才渐渐发展起来的。起先,完全借用汉字表现思想.第二个阶段,发明了假名,就是用汉字的草写为基础,建立的日语的拼音文字.当时地位很低,只有女性使用这种文字.第三个阶段,用汉字和假名混合表达思想.就是现代规范的日文.日本文里面的汉字,有...

为什么中国的官方语言是“汉语”、文字是“中文”,而不叫“中语”或...
选择“汉语”和“中文”作为官方术语,既体现了对历史传统的尊重,也便于国际交流和认知。总的来说,"汉语"和"中文"的选择,是对中国悠久历史和多元文化的精炼概括,它们不仅仅是一种语言和文字的名称,更是华夏民族身份和文化认同的象征。在全球化的大背景下,这样的命名策略有助于增强民族自豪感,促进...

为什么日本的文字里面会有中文?
大大推动了汉字在日本的传播。日本历史上,由于长期使用汉语文,大量的汉语词汇进入日语,如《角川国语词典》所收的60218个日语词汇中,据统计,汉语借词多达33143个,占词汇总数的55%。由于汉字在日本的长期使用及其深远影响,即使假名创制以后,日文中仍无法排斥汉字,假借汉字仍与假名混合使用。

与字的拼音
三、“与”字的常见搭配 “与”字在中文语言中有很多常见的搭配,常见的有以下几种:1.与人为善:表示待人友好,乐于助人,善良和慷慨。2.与时俱进:表示与时代发展同步,跟随潮流,不落后于时代。3.与众不同:表示与众不同的特点,有独到的见解和想法。4.与虎谋皮:表示将自己置身于险境,和...

金东区15310051597: C语言中带有中文的字符串怎么翻转 -
关胀海正: 看中文字符编码 windows一般是gbk 两个字节 作为一个汉字,第一个字节必然是0xA0以上的.遇到这种 把两个字节作为一个整体进行翻转. 对于带汉字的,用一个字符串进行翻转比较麻烦 最好用另一个字符串进行存储. void reverse_with_...

金东区15310051597: 怎么用C语言实现汉字字符串的反转 -
关胀海正: 我自己写的函数,只能将纯汉字反序 void reversal(char st[]) { int i = 0, j = 0; char c; while (st[i]) i++; while (j{ if (j % 2) { c = st[i - j]; st[i - j] = st[j]; st[j] = c; } else { c = st[i-2-j]; st[i-2-j] = st[j]; st[j] = c; } j++; } }

金东区15310051597: C语言中如何将中文字符倒序输出 -
关胀海正: 一个汉字扩展ASCII码),而getchar()每次只能读入一个字节,因此读入汉字时,则需要用gets()函数. 倒叙输出汉字串时,有两种方法,一是从字符串末端开始,每次输出两个字节,二是直接汉字将字符串在数组中倒置,然后再用puts()函数直接输出. 以上两种方法都有局限性,一旦含有非汉字字符,极有有可能造成乱码.

金东区15310051597: c语言编程 从键盘上输入一个字符串通过函数调用的方法使该字符串翻转 并输出这个翻转后的字符串 -
关胀海正: 1 输入字符串; 2 调用函数进行翻转,可以通过将对称位置字符交换值实现; 3 输出结果. 代码如下: void revers(char *s) {char *p=s,c;while(*p)p++;p--;while(p>s){c = *p;*p = *s;*s = c;} }int main() {char s[100];scanf("%s",s);revers(s);printf("%s",s); }

金东区15310051597: c语言中怎么把中文转换为字符? -
关胀海正: 一般不支持中文转换,你可以字符的格式输出,比如 int m=97; printf("%c",m )则结果就是以字符的形式输出的,结果为 a 也就是字符a

金东区15310051597: c语言如何实现字符串按位翻转 -
关胀海正: 如果所说的是字符串的反转操作是很方便的,只要使用一个辅助单元就可以实现: char s[200],i,j,c; gets(s); for(j=0;s[j];j++); for(i=0;i<j;i++,j--){c=s[i];s[i]=s[j];s[j]=c;} puts(s);

金东区15310051597: 在C语言中,怎样读取文本文档的一个中文的字符串?
关胀海正: 就当一般的字符串一个字一个字地读,读到逗号为止.跟自己实现fgets()函数差不多. enum { SIZE = 1024 }; char str[SIZE]; /* 声明一个字符数组 */ /* 下面读到逗号或数组最大值时停止 */ for (i = 0; i &lt; SIZE - 1 &amp;&amp; (c = getchar() ) != ','; ++i) str[i] = c; str[i] = '\0';

金东区15310051597: C语言字符串反转 -
关胀海正: 1 2 3 4 5 6for(i = 0; i < len/2; i++)//<----------------------{ch = str[i];str[i] = str[len - i - 1];str[i] = ch;}

金东区15310051597: c语言 如何读取中文字符串 -
关胀海正: 可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc(); 先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符.读取全部文本中全部字符可以使用一个while循环...

金东区15310051597: c语言的问题字符串反转 -
关胀海正: 因为你在dest++时,改变了dest的指向的位置,所以没有输出正确的结果.按照你的程序给你修改了一下,请参考. 1 #include <stdio.h> 2 #include <string.h> #include <malloc.h> // 注意这里:增加使用malloc的头文件,消除warning 3 main() 4 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网