1,使用指针实现字符串拷贝
void MyStrcpy(char *p,char *q)
#include<stdio.h>
#include<string.h>
void MyStrcpy(char *p,char *q);
int main(int argc, const char *argv[])
{
char str1[100]="";
char str2[100];
gets(str2);
char *p =str1;
char *q =str2;
MyStrcpy(p,q);
puts(str1);
return 0;
}
void MyStrcpy(char *p,char *q){
int i = 0;
while(*(q+i)!='\0'){
*(p+i) = *(q+i);
i++;
}
*(p+i)='\0';
}
2,使用指针实现字符串比较
Void MyStrcmp(char *p,char *q)
#include<stdio.h>
#include<string.h>
void MyStrcmp(char *p,char *q);
int main(int argc, const char *argv[])
{
//2,使用指针实现字符串比较
//Void MyStrcmp(char *p,char *q)
char str1[100];
char str2[100];
gets(str1);
gets(str2);
char *p = str1;
char *q = str2;
MyStrcmp(p,q);
return 0;
}
void MyStrcmp(char *p,char *q){
int i = 0;
int j = 0;
while(*(p+i)==*(q+j)){
if(*(p+i)=='\0'&&*(q+i)=='\0'){
break;
}
else{
i++;
j++;
}
}
int sub = *(p+i)-*(q+j);
if(sub==0)
printf("字符串相等\n");
else if(sub>0)
printf("str1 > str2\n");
else
printf("str1 < str2\n");
}
3,使用指针实现计算单词的个数,返回单词的个数
Char str[]=”hello my student”
输出有3个字符串
int StrNum(char *p);
#include<stdio.h>
#include<string.h>
int StrNum(char *p);
int main(int argc, const char *argv[])
{
//3,使用指针实现计算单词的个数,返回单词的个数
//Char str[]=”hello my student”
//输出有3个字符串
//int StrNum(char *p)
char str[100];
gets(str);
char *p = str;
int num = StrNum(p);
printf("单词个数为:%d\n",num);
return 0;
}
int StrNum(char *p){
int i = 0,j;
int cnt = 0;
while(*(p+i)!='\0'){
while(*(p+i)==' '){
i++;
}
j = i;
if(*(p+j)!='\0'){//为了防止最后一个单词后面存在空格
cnt++;
}
while(*(p+j)!=' '&&*(p+j)!='\0'){//最后一个单词可能以/0结尾
j++;
}
i = j;
}
return cnt ;
}
day9:指针总结