|
发表于 2022-6-7 15:47:37
|
显示全部楼层
回帖奖励 +10 鱼币
本帖最后由 jhq999 于 2022-6-7 17:10 编辑
纯手写,只是个思路
- 1、
- typedef struct STUDENT
- {
- float hl,np,avg;
-
- }STT,*pSTT;
- STT st[5]={0};
- 输入计算
- 排序
- FILE *fp=fopen(.........);
- fwrite(st,sizeof(STUDENT)*5,1,fp);
- fclose(fp);
- 2、
- void stradd(char* s,char* t,int *f)
- {
- int i=0,j=0;
- while(s[i])i++;
- while((s[i]=t[j]))i++,j++;
- *f=i;
- }
- int strnew(char* s,char* a,char* b)
- {
- int i=0,j=0,k=0,count=0,slen=0,alen=0,blen=0;///slen是 s长度, alen 是a长度, blen 是b长度
- for(i=0;s[i];i++)//找出s多少个a
- {
- if(s[i]==a[0])
- {
- for(j=0;a[j]&&a[j]==s[i+j];j++);////如果在a循环结束之前a[j]不等于s[i+j]就不是
- if('\0'==a[j])alen=j,count++;/////a在a[j]结束全都等于s[i+j],那么这段就是,count统计a在s的数量,alen是顺便得出的a的长度
- }
- }
- slen=i;
- for(i=0;b[i];i++);
- blen=i;
- char *tmp=(char*)malloc(count*(blen-alen)+slen+1);
- for(i=0,k=0;s[i];i++,k++)
- {
- if(s[i]==a[0])
- {
- for(j=0;a[j]&&a[j]==s[i+j];j++);
- if('\0'==a[j])
- {
- for(j=0;b[j];j++)tmp(k++)=b[j];
- }
- }
- i+=alen;
- tmp[k]=s[i];
- }
- tmp[k]='\0';
- for(i=0;tmp[i];i++)s[i]=tmp[i];
- s[i]='\0';
- free(tmp);
- return i;
- }
复制代码
|
|