• 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。


    //编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符长度相同,则返回第一个字符串。

    //重难点:通过数组处理和通过指针进行处理的不同。记住对指针进行处理以后,指针的位置已经发生变化,所以要进行指针的备份。注意返回值类型是否匹配,这里函数为指针函数所以返回的时候只返回指针名即可。数组备份的时候必须在初始化的时候进行复制。尽量使用数组。尽可能的简化代码。对文件的输入输出的不同。

     1 #include <stdio.h>
     2 char  *fun ( char *s,  char *t)
     3 {
     4 /*    int i;
     5     char *q = s, *w = t;//定义指针备份的时候,要在初始化的时候进行赋值。
     6     for (i = 0; *q&&*w; i++)//这两个字符有一个到结尾,循环就结束。
     7     {
     8         q++;
     9         w++;
    10     }
    11     if (*q == 0 && *w == 0)
    12         return s;
    13     if (*q)//这种情况,*q还没有结束,而*w等于0,已经结束了。说明q要长一点。
    14         return s;
    15     else
    16         return t;*/
    17 /*    int i, j;//可以不需要从新申明计数器,使用循环的i和j就可以。
    18     for (i = 0; s[i] != ''; i++);//这里空语句分号不能省略,代表循环什么都不做。
    19     for (j = 0; t[j] != ''; j++);
    20     if (i < j)//可以的话,可以省略大括号。
    21         return t;
    22     else
    23         return s;*/
    24     int i=0, j=0;
    25     char *q=s, *w=t;//通过指针对数组做处理的时候,注意,对数组操作之后,指针的位置已经不是第一个字符了,所以必须进行备份,然后对新复制的指针,进行操作。
    26     //q = s;//这样不可以。
    27     //w = t;
    28     while(*q!='')
    29     {
    30         i = i + 1;
    31         q = q + 1;
    32     }
    33     //printf("%d",i);
    34     while(*w!='')
    35     {
    36         j = j + 1;
    37         w = w + 1;
    38     }
    39     //printf("%d",j);
    40     if (i < j)
    41     {
    42         return t;//这里返回指针名,不加*号,因为函数为指针函数。
    43     }
    44     else
    45     {
    46         return s;
    47     }
    48 
    49 }
    50 main( )
    51 { char a[20],b[20];
    52   void NONO (  );
    53   printf("Input 1th string:") ;
    54   gets( a);
    55   printf("Input 2th string:") ;
    56   gets( b);
    57   printf("%s
    ",fun (a, b ));
    58   NONO ();
    59 }
    60 void NONO ( )
    61 {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    62   FILE *fp, *wf ;
    63   int i ;
    64   char a[20], b[20] ;
    65   fp = fopen("in.dat","r") ;
    66   wf = fopen("out.dat","w") ;
    67   for(i = 0 ; i < 10 ; i++) {
    68     fscanf(fp, "%s %s", a, b) ;
    69     fprintf(wf, "%s
    ", fun(a, b)) ;
    70   }
    71   fclose(fp) ;
    72   fclose(wf) ;
    73 }
  • 相关阅读:
    C++默认参数
    C语言中volatile关键字的作用
    CURL超时处理
    C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
    unix时间戳和localtime
    !!的用处
    linux中grep和egrep的用法
    非阻塞,send后马上close消息能成功发出去吗
    .hpp与.h的区别
    14课作业答疑
  • 原文地址:https://www.cnblogs.com/ming-4/p/10287041.html
Copyright © 2020-2023  润新知