C和指针中文版PDF
- 格式:docx
- 大小:7.26 KB
- 文档页数:1
C和指针:字符串的查找、删除、反向排列(2008-12-28 16:37:00)转载▼标签:c语言指针数据结构与算法it#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>int find_string(const char *source ,const char *chars) {if(source==NULL || chars==NULL)return -1;int s_len=strlen(source),c_len=strlen(chars);if(s_len < c_len) return -1;const char *p,*q;for(int i=0;i<s_len && s_len-i>=c_len;i++){p=source+i;q=chars;while( *p!='\0'&& *q!='\0' && *p==*q){q++;p++;}if(q >= chars + c_len) return i;}return -1;}int del_substr(char *str,char const *substr){if(str==NULL || substr==NULL)return -1;if('\0'==*str || '\0'==*substr)return -1;int str_len=strlen(str),substr_len=strlen(substr);if(str_len < substr_len) return -1;int first;if( (first=find_string(str,substr)) == -1) return -1;char *p_str=str,*p_before=str+first;char *p_after=p_before+substr_len;while(*p_before++ = *p_after++);return 1;}void reverse_string(char *string){if(string==NULL || *string=='\0') return ;int len=strlen(string);if(len==1) return ;char *before=string,*after=string+len-1;char temp;while( before < after ){temp=*before;*before=*after;*after=temp;before++;after--;}}int main(){char source[]="abcdefgdhjsdfkhsdfnbcxvndbfghijklnm\0";char value[]="jkln\0";int pos;pos=find_string(source , value);if(pos!=-1)printf("OK: %d\n",pos);else printf("NO\n");printf("\n");chars[]="123456789123456789123456789123456789123456789123456789123456789\0";int ok=del_substr(s,"");if(ok==1) printf("result = %s\n",s);else printf("NO\n");printf("\n");printf("source = %s\n",s);reverse_string(s);printf("result = %s\n",s);getch();return 0;}。
建议你刚刚学完C不要看那些技术含量比较有深度的书,比如《C陷阱与缺陷》、《c与指针》之类的书。
因为潭老的书太基础了,C语言的很多内容都没有讲到,直接看这些书太早,看也看不明白的。
应该先把C语言学完全学扎实,了解C语言方方面面的知识,C primer plus 就很不错,我买的是中文第5版,里面对C的知识讲解的非常全面,提到了很多编译器的问题,比如在当今最流行的.net平台下编写C程序、LINUX下的C语言程序的编译等,还有许多C语言其他方面的知识。
当你全面扎实的掌握了C的知识后,再看一些C关于算法和技术含量比较深的书,比如上面提到的《C陷阱与缺陷》、《c与指针》,还有一本比很好的书《C专家编程》,这本书的作者就是《C陷阱与缺陷》的作者,是国际上的专家。
此外,还可以看一些关于C的开发的书籍,自己动手做一些小软件,比如信息管理系统、特殊计算器、以及一些小游戏(做游戏必须把图形方面学好,对将来好处很大)。