/*
要包含头文件 : #include<stdlib.h>
strlen(str),求字符串长度,不包括’\0’。
strcpy(str1,str2),str2复制到str1,str1必须发的下str2。
strcmp(str1,str2),str1大于str2,返回值大于0;str1等于str2,返回值等于0;str1小于str2,返回值小于0。
strcat(str1,str2),str2添加到str1中。str1必须有足够的大小
strncpy(str1,str2,n),str2至多前n个字符复制到str1中。
strncmp(str1,str2,n),最多比较n个字符。V
strncat(str1,str2,n),str2中至多前n个字符放到str1后面。
*/
//将字符串进行排序,利用数组进行排序,因为以行优先进行存储。
#include<stdio.h>
#include<stdlib.h>
#define MAX_LEN 10
#define N 10
void SortSting(char str[][MAX_LEN],int n)
{
int i,j;
char temp[MAX_LEN];
for(i=0;i<n-1;i++)
{
for(j=i+1;i<n;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
}
int main()
{
int i,n;
char str[N][MAX_LEN];
scanf("%d",&n);
getchar();//读走输入缓冲区里的回车符,防止gets读入了。
for(i=0;i<n;i++)
{
gets(str[i]);
}
SortString(str,n);
for(i=0;i<n;i++)
{
puts(str[i]);
}
return 0;
}
/*
对于单个字符进行赋值可以用赋值运算符(=),但是对于赋值运算符进行赋值,只能用strcpy();
比较字符串不能用关系运算符,而应该用strcmp()。
*/
//将一个字符串赋值到另一个字符串中。
#include<stdio.h>
#define N 80
/*
void MyStrcpy(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0';i++)
{
b[i]=a[i];
}
b[i]='\0';
}
*/
void MyStrcpy(char *pa,char *pb)
{
while(*pa!='\0')
{
*pb++=*pa++;
}
*pb='\0';
}
int main()
{
char a[N],b[N];
gets(a);
MyStrcpy(b,a);
puts(b);
return 0;
}
/*
返回指针值的函数与函数指针是截然不同的:
char *f();返回字符指针的函数;
char (*f)();函数指针指向的函数,返回值是字符型。
*/
//实现字符串连接功能
#include<stdio.h>
#define N 80
char *MyStrcat(char *first,char *second)
{
char *temp;
temp=first;//保存第一个字符串的首地址
while(*first!='\0')
{
first++;
}
for(;*second!='\0';second++,first++)
{
*first==*second;
}
*first='\0';
return temp;
}
int main()
{
char a[2*N],b[N];
gets(a);
gets(b);
printf("%s\n",MyStrcat(a,b));
return 0;
}