-
预科第十三天
今天是预科的最后一天,讲的内容也比较少,下周一正式开班。老师先给我们讲解了昨天留的作业,然后就给我们讲了一些字符串的截取。
//实现mystrcpy:
#include <stdio.h>
#include <string.h>
void myStrcpy(char *dst,const char *src,int dstSize)
{
if(dstSize<=strlen(src))
{
printf("越界\n");
return;
}
while (*src!=0)
{
*dst=*src;
dst++;
src++;
}
*dst=0;
}
int main()
{
char dst[6];
char sorce[10]="hello";
myStrcpy(dst,sorce,6);
printf("dst=%s\n",dst);
return 0;
}
//截取信息,遇到';'截取 xx1;xx2;xxx
#include <stdio.h>
#include <string.h>
void splitStringByCharacter(char *str,char ch,char *preStr,char *behindStr)
{
while (*str!=ch)
{
*preStr=*str;
str++;
preStr++;
}
*preStr=0;
str++;
while (*str!=0)
{
*behindStr=*str;
behindStr++;
str++;
}
*behindStr=0;
}
int main()
{
char message[20]="xx1;xx2;info";
char preStr1[10];
char preStr2[10];
char behindStr1[10];
char behindStr2[10];
splitStringByCharacter(message, ';', preStr1, behindStr1);
splitStringByCharacter(behindStr1, ';', preStr2, behindStr2);
printf("preStr=%s\nbehindStr=%s\npreStr2=%s\nbehindStr2=%s\n",preStr1,behindStr1,preStr2,behindStr2);
return 0;
}
字符串数组实际上就是一个二维数组
char str[4][10] = { //经过试验在Visual C++ 6.0中这样写会出错
"hello",
"world",
"nihao",
"xxxx"
};
str[0][3] = 'y';
char *p[4] = {
"hello",
"world",
"nihao",
"xxxx"
};
//p[0][3] = 'y';//*(p[0]+3) = 'y';
int i;
for(i = 0;i < 4;i++)
{
printf("str[%d] = %s\n",i,str[i]);
}
将哪个字符串进行截取,
思路1:
截取的位置和截取的长度
char dst[10];
char source[20] = "helloworld";
splitStringByBeginPositionAndLength(source,5,6,dst);
printf("dst = %s\n",dst);
思路2:
截取的起始位置和截取的最终位置
思路3:
拿到子字符串的起始位置
思路4:
判断某个字符串是否有想要的字符串
#include<stdio.h>
#include<string.h>
//截取的起始位置和截取的长度
void splitStringByBeginPositionAndLength(char *str,int start,int length,char *dst)
{
if(start+length>strlen(str))
{
printf("越界\n");
return;
}
str+=start;
int i;
for (i=0; i<length; i++)
{
*dst=*str;
dst++;
str++;
}
*dst=0;
}
int main()
{
char dst[10];
char source[20]="helloworld";
splitStringByBeginPositionAndLength(source, 5, 5, dst);
printf("dst=%s\n",dst);
return 0;
}
思路2:截取的起始位置和截取的最终位置
#include<stdio.h>
#include<string.h>
//截取的起始位置和截取的最终位置
void splitStringByStartPositionAndEndPosition(char *str,int start,int end,char *dst)
{
if(end + 1 > )
char *endPosition = str + end +1;
str += start;
while(str != endPosition)
{
*dst = *str;
dst++;
str++;
}
*dst = 0;
}
int main()
{
char dst[10];
char src[20] = "helloworldnihao";
splitStringByStartPositionAndEndPosition(src,5,9,dst);
printf("dst = %s\n",dst);
return 0;
}
思路3:
拿到子字符串的起始位置
思路4:
判断某个字符串是否有想要的字符串
老师留了3、4两点给我们做作业,让我们自己思考如何实现,对我来说难度真的不小。
网友评论