本帖最后由 Gin_Q 于 2020-1-30 01:41 编辑
这是c写的!只支持数字和字母- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 2048
- FILE *fp;
- FILE *fp1;
- int main(void)
- {
- if ((fp=fopen("C:\\Users\\Cool_Breeze\\Desktop\\gin\\strt.txt","r"))==NULL) //待处理文件的位置
- {
- printf("读取文件失败!");
- return 0;
- }
- if ((fp1=fopen("C:\\Users\\Cool_Breeze\\Desktop\\gin\\new.txt","w"))==NULL) //保存文件的位置
- {
- printf("打开文件失败!");
- return 0;
- }
- char str[MAX]="0";
- int fun1(char*);
- printf("正在处理文件...\n");
- while (1)
- {
- if (fgets(str,MAX,fp)==NULL) break;
- fun1(str);
- }
- fclose(fp);
- fclose(fp1);
- printf("完成");
- return 0;
- }
- int fun1(char *arr)
- {
- char *p=arr,temp[MAX]="";
- int n=0,i=0,j=0,on=0;
- while (1)
- {
- if (*(p+n)>=48 && *(p+n)<=57)
- {
- i++;
- on=0;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- else if (*(p+n)>=65 && *(p+n)<=90)
- {
- j++;
- on=1;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- else if (*(p+n)>=97 && *(p+n)<=122)
- {
- j++;
- on=1;
- if (i>=2 && on!=0)
- {
- strcat(temp,"-");
- i=0;
- }
- else if (j>=2 && on!=1)
- {
- strcat(temp,"-");
- j=0;
- }
- strncat(temp,(p+n),1);
- }
- if (*(p+n)=='\0')
- {
- if (i>=2) strcat(temp,"-"); //满足条件结尾是否加【-】,默认加。
- else if (j>=2) strcat(temp,"-"); //满足条件结尾是否加【-】,默认加。
- fprintf(fp1,"%s\n",temp);
- return 0;
- }
- n++;
- }
- }
复制代码
- 源文件:abcd123c
- an124Ab1
- wrf1
- waf234
- af13
- fa1
- ----------------------分割线---------------------
- 效果如下:
- abcd-123-c
- an-124-Ab-1
- wrf-1
- waf-234
- af-13
- fa-1
复制代码
|