The programming language 练习4-1
2013-10-08 19:04
169 查看
编写函数,但会字符串t在s中最右边出现的位置,如果s中不包含t,则返回-1
#include<stdio.h>
int my_strncmp(char *str1,char *str2,int n);
int my_strlen(char *s);
int strindex(char *s,char *t);
int
main (int argc, char *argv[])
{
char s1[100],s2[100];
scanf("%s",s1);
scanf("%s",s2);
printf("%d\n",strindex(s1,s2));
return 0;
}
int my_strncmp(char *str1,char *str2,int n)
{
while(1)
{
if((*str1!=*str2)&&n!=0)
{
return *str1>*str2?1:-1;
}
if(n==0) return 0;
n--;
str1++;
str2++;
}
}
int my_strlen(char *s)
{
int n=0;
while(*s++)
n++;
return n;
}
int strindex(char *s,char *t)
{
char *p1=s,*p2=t;
int lens1,lens2,count=0;
while(*p1) p1++;
lens1=my_strlen(s);
lens2=my_strlen(t);
p1-=lens2;
while(count<=lens1-lens2)
{
if(my_strncmp(p1,p2,lens2)==0)
{
return lens1-lens2-count;
}
count++;
p1--;
}
return -1;
}
注:可用系统提供的strlen和strbcmp函数,我在这里重写了这两个函数。
#include<stdio.h>
int my_strncmp(char *str1,char *str2,int n);
int my_strlen(char *s);
int strindex(char *s,char *t);
int
main (int argc, char *argv[])
{
char s1[100],s2[100];
scanf("%s",s1);
scanf("%s",s2);
printf("%d\n",strindex(s1,s2));
return 0;
}
int my_strncmp(char *str1,char *str2,int n)
{
while(1)
{
if((*str1!=*str2)&&n!=0)
{
return *str1>*str2?1:-1;
}
if(n==0) return 0;
n--;
str1++;
str2++;
}
}
int my_strlen(char *s)
{
int n=0;
while(*s++)
n++;
return n;
}
int strindex(char *s,char *t)
{
char *p1=s,*p2=t;
int lens1,lens2,count=0;
while(*p1) p1++;
lens1=my_strlen(s);
lens2=my_strlen(t);
p1-=lens2;
while(count<=lens1-lens2)
{
if(my_strncmp(p1,p2,lens2)==0)
{
return lens1-lens2-count;
}
count++;
p1--;
}
return -1;
}
注:可用系统提供的strlen和strbcmp函数,我在这里重写了这两个函数。
相关文章推荐
- 再读《The C Programming Language》 第二章 2.4 练习汇总
- 编写函数itob,将整数n转换为以b为底的数(The c programming language 练习3-5)
- The C Programming Language 第二版 练习1-16 修改main实现
- 关于编写一个函数invert(x,p,n),返回x循环右移n位后得到的值,the c programming language 第二章练习2-8
- 转:Password Masking in the Java Programming Language
- The C Programming Language 学习记录
- [转] C++之父Bjarne Stroustrup写的《The C++ Programming Language (Special Edition)》中各章后面的忠告
- The C++ Programming Language 读书笔记(一)
- The C Programming Language 第一章导言 读书笔记
- The C++ Programming Language 读书笔记(二)
- The C++ programming language Part Two 10(译)
- The C programming language 4.1
- Expressions and Statements(Chapter 6 of The C++ Programming Language)
- Functions(Chapter 7 of The C++ Programming Language)
- Exception Handling(Chapter 14 of The C++ Programming Language)
- The C Programming Language--可变参数的函数
- The C Programming Language--------(1)
- Swift中共有74个内建函数,但是在Swift官方文档(“The Swift Programming Language”)中只记录了7中。剩下的67个都没有记录。
- a expample of the c programming language.(temp)
- The Swift Programming Language--语言附注--类型