练习1:在堆区申请两个长度为32的空间,实现两个字符串的比较【非库函数实现】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char *p = (char *)malloc(sizeof(char)*32);
char *q = (char *)malloc(sizeof(char)*32);
strcpy(p,"hello world");
strcpy(q,"hello shanghai");
str_cmp(p,q);
return 0;
}
void str_cmp(char*p,char*q){
int i=0;
while(p[i]==q[i]){
if(p[i]!=q[i]){
break;
}
i++;
}
int sub = p[i]-q[i];
if(sub>0)
printf("p>q\n");
else if(sub<0)
printf("p<q\n");
else if(sub==0)
printf("p=q\n");
return 0;
}
练习2: 定义函数,在堆区申请空间 两个申请,主函数需要调用2次
#include <stdio.h>
#include <stdlib.h>
void* mal(size_t size) {
void* ptr = malloc(size);
return ptr;
}
int main() {
int* array1 = (int*)mal(10 * sizeof(int));
if (array1 != NULL) {
free(array1);
}
double* array2 = (double*)mal(20 * sizeof(double));
if (array2 != NULL) {
free(array2);
}
return 0;
}
练习3:定义函数,实现字符串的输入 void input(char *p)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(char *p);
int main(int argc, const char *argv[])
{
char p[128];
input(p);
puts(p);
return 0;
}
void input(char *p)
{
printf("请输入一个字符串\n");
gets(p);
}
练习4:调用函数实现字符串比较,在主函数中输出大小
int my_strcmp(const char *s1,const char *s2)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int my_strcmp(const char*s1,const char *s2);
int main(int argc, const char *argv[])
{
char *p = (char *)malloc(sizeof(char)*32);
char *q = (char *)malloc(sizeof(char)*32);
strcpy(p,"hello world");
strcpy(q,"hello shanghai");
my_strcmp(p,q);
return 0;
}
int my_strcmp(const char*s1,const char*s2){
int i=0;
while(s1[i]==s2[i]){
if(s1[i]!=s2[i]){
break;
}
i++;
}
int sub = s1[i]-s2[i];
if(sub>0)
printf("s1>s2\n");
else if(sub<0)
printf("s1<s2\n");
else if(sub==0)
printf("s1=s2\n");
return 0;
}
练习5:定义函数,释放空间
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Free(char*p);
int main(int argc, const char *argv[])
{
char*q = (char*)malloc(sizeof(char)*8);
strcpy(q,"hello");
puts(q);
Free(q);
return 0;
}
void Free (char *p){
if(p!=NULL){
free(p);
p=NULL;
}
}