C中用字符指针和字符串处理字符串的问题。

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
用c语言指针实现字符串逆序及回文串的判定
下载积分:900
内容提示:用c语言指针实现字符串逆序及回文串的判定
文档格式:PDF|
浏览次数:25|
上传日期: 06:37:48|
文档星级:
该用户还上传了这些文档
用c语言指针实现字符串逆序及回文串的判定
官方公共微信C语言编程:用指针找出字符串s和t中相同的字符,放在u中_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:456,289贴子:
C语言编程:用指针找出字符串s和t中相同的字符,放在u中收藏
#include&stdio.h&#include&string.h&int main(){ char *k,*l,*m; char s[100],t[100],u[100]={0}; k=&s[100]; l=&t[100]; m=&u[100];
printf("请输入第一个字符串:\n");
printf("请输入第二个字符串:\n");
for(;*k!='\0';k++)
for(;*l!='\0';l++)
if((*k)==(*l))
*m='\0';puts(u);}
不知道哪里错了,没有输出结果
说错了''''l c s
k=&s[100];l=&t[100];m=&u[100];改为:k=s;l=t;m=u;============for(;*k!='\0';k++){for(;*l!='\0';l++) 用一层循环,而不是两层============= 去掉这个break,因为这样只要找到一个相同的字符就跳出了
我看错了,还是要多层循环,因为你找的是相同字符,而不是对应位置的相同字符
这个是对应位置相同字符的,或许对别人有用,放在这里吧
非常感谢您的回答,我已经找出错在第二次循环没令l=t这是修正后的程序:#include&stdio.h& #include&string.h& int main() {
char *k,*l,*m;
char s[100],t[100],u[100];
printf("请输入第一个字符串:\n");
printf("请输入第二个字符串:\n");
for(;*k!='\0';k++)
for(l=t;*l!='\0';l++)
if((*k)==(*l))
*m='\0'; puts(u); }
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或c语言和c++中常量字符串赋值给字符指针的警告有关问题 - C++当前位置:& &&&c语言和c++中常量字符串赋值给字符指针的警告有关问c语言和c++中常量字符串赋值给字符指针的警告有关问题&&网友分享于:&&浏览:0次c语言和c++中常量字符串赋值给字符指针的警告问题为什么在c语言和c++中把一个常量的字符串赋值给一个字符指针的时候会出警告呢?
char&*ap&=&"Hello";
就会出错呢,有什么解决方法呢?------解决思路----------------------const&char&*
不是char&*------解决思路----------------------引用:Quote: 引用:
const&char&*
不是char&*
如果非要用char&*呢,我还想让他指向别的字符
const&char&*ap&=&"Hello";&&//就可以
非常量字符串则不能这样直接赋值给一个char*指针,因为光一个char*指针并没有分配内存空间用于存放字符串------解决思路----------------------因为"Hello"是一个常量字符串,与之匹配的只能是常量指针,const&char*,而你让char*指向了它,后续如果通过这指针修改这个常量字符串就会出现错误。------解决思路----------------------
strcpy(ap&,&"Hello");------解决思路----------------------不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
------解决思路----------------------引用:Quote: 引用:
const&char&*
不是char&*
如果非要用char&*呢,我还想让他指向别的字符
const&char*&是表示指针指向的是常量,他仍然可以指向其他字符串(当然其他字符串得是常量)------解决思路----------------------引用:Quote: 引用:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
我还是入门级,你这太高深
听我的,跳过所有和const有关的C++知识点,学别的。------解决思路----------------------引用:Quote: 引用:
Quote: 引用:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
我还是入门级,你这太高深
听我的,跳过所有和const有关的C++知识点,学别的。
这个同意,但搞懂比不清楚还是要好的。------解决思路----------------------引用:Quote: 引用:
Quote: 引用:
Quote: 引用:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
我还是入门级,你这太高深
听我的,跳过所有和const有关的C++知识点,学别的。
这个同意,但搞懂比不清楚还是要好的。
知道什么叫“机会成本”吗?
你花时间精力学了这个没多大用途的知识点,就少了相应的时间精力去学比如有很大用途的WinDbg使用技巧的知识点。------解决思路----------------------引用:Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
我还是入门级,你这太高深
听我的,跳过所有和const有关的C++知识点,学别的。
这个同意,但搞懂比不清楚还是要好的。
知道什么叫“机会成本”吗?
你花时间精力学了这个没多大用途的知识点,就少了相应的时间精力去学比如有很大用途的WinDbg使用技巧的知识点。
必须知道;有些问题相对弄不太明白,看别人的代码还会有问题的;所以感觉可以从原理上弄明白了,或记住,待学得东西多了,或许有一天会顿悟的------解决思路----------------------引用:Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API&WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
#pragma&comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
我还是入门级,你这太高深
听我的,跳过所有和const有关的C++知识点,学别的。
这个同意,但搞懂比不清楚还是要好的。
知道什么叫“机会成本”吗?
你花时间精力学了这个没多大用途的知识点,就少了相应的时间精力去学比如有很大用途的WinDbg使用技巧的知识点。
必须知道;有些问题相对弄不太明白,看别人的代码还会有问题的;所以感觉可以从原理上弄明白了,或记住,待学得东西多了,或许有一天会顿悟的
const的最大作用是防止程序员修改了不应修改的数值;但其仅能在编译期有限度地防止;而在运行期,要么防止不了,要么反而阻碍了程序员需要在运行期修改所谓常量的现实需求。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有用C语言指针实现字符串逆序及回文串的判定_中华文本库
第1页/共3页
。戆黍熬j纛窦黪鬃
用C语言指针实现字符串逆序及回文串的判定
(新疆兵团高等专科学校新疆?鸟鲁木齐831300)
摘要:字符串逆序输出是C语言经典算法之一,过去利用数组下标处理此类问题,较为繁琐,本文给出了利用指针实现任意给定字符串的逆序输出方法,以及在此基础上进行回文字符串判断的便捷方法。
关键词:C语言指针字符串逆序算法回文中图分类号:TP39
文献标识码:A
文章编号:1007-3973(20081
12-071.Ol
‘C语言中,实现任意给定字符串的逆序输出,是一道经典常用算法,掌握此类算法,对于提高运用字符串能力及编程综合能力都有很大的帮助。对于C语言字符串的处理,人们惯常使用的是数组下标的方法,不仅效率低,而且估算下标容易出错,准确率低,最为致命的还是下标一旦越界,会出现乱码甚至程序崩溃。笔者经过试验、总结,提炼出用指针实现字符串逆序输出的简便方法,并且在此基础上,应用此类方法,我们可以方便快捷的解决同类的字符串处理问题,例如回文的判断,本文也给出了相应实现办法.1问题
(1)对于任意给定的字符串,进行倒置,打印输出该串为原串的逆序。例如输入为“tomo玎ow”。则其存储和输出即为“worromot”。
(2)判断任意给定字符串是否回文,输出相应提示信息。
所谓“回文串”,即一个字符串正序读和逆序读时都一样,如“level”或者“noon”等等就是回文串。2算法思路
问题1)将一个给定字符串逆序存储
定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,交换两指针指向的字符,交换后两指针分别后移和前移,循环交换对应位置的字符,直到两指针在中点相遇,则整个串实现了与原串的逆序存储。
问题2)回文的判定:类似问题1)的处理方法,我们首先定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,两指针分别后移和前移,依次判断对应位置的字符是否相同,一旦不相同即退出循环,说明不是回文串,若一直相同,直到两指针在中点相遇,则整个串是回文串,输出相应信息。
问题I)和问题2)的核心算法,都是对对应位置的字符进行比较判断,故我们都采用指针的方法可以很方便的解决这两类问题。3算法实现
对比:用数组下标的方式判定回文的算法实现(结合指针的运用):
#include“stdio.h”#include“string.h”int
sn-[50J,’p;
printf(“请输入字符串妇”);scanq”%s”,s∞;P-s也
t/把指针移动到字符串的末尾
矿矿strlen(str)-I;
for(i=O;i<(int)strlen(str);i++,p..){
if(+p!fstr[i]){
printff”这个字符串不是回文、Il”);
return
printff”这个字符串是回文、ll”);
return
对比:用堆栈的方式判定回文的算法实现:
#include<stdio.h>#defineS1'ACK
INITSIZE
#dcfineSTACKINCltEⅣ【ENTlOtypcdefstruct
char+base;char‘top;intstacksizc;
}SqStack;
intInitStack(SqStack‘S)
S->base=(char+)malIoc(STACK—INIT—SIZE+sizeof(char)):
if(!S->base)
rg:t1.1nl
S->top=S->basc;
S->s。tacksizc;STACK_INIT-sIZE;
rgturn
int净0:
intj=O;
{str[20],str2120];
斟m论丘?2008年第12期I下)
第1页/共3页
寻找更多 ""

我要回帖

更多关于 指针和字符串 的文章

 

随机推荐