C语言随感进行时(不定时更新)

*嗯,突发奇想地想把想到的和学到的C语言知识写下来,仅此而已。欢迎指正,我只是一个C语言的初学者*/

/*动态数组的一种实现方法*/

#include<stdio.h>
#include<stdlib.h> 
main()
{
      int n,i,*a;
      printf("Please input the arry's boundry:");
      scanf("%d",&n);
      a=malloc(n*sizeof(int));/*这里不能强制转换成(int),因为开辟的内存单元超过一个int类型的大小*/
      /*a是一个指针变量,分配给的存储单元为n*int类型,之后可以使用i
      作为下脚标访问每一个元素,也可以使用a++来访问,但是a++会移动指针a*/ 
      printf("Please input numbers:/n");
      for (i=0;i<n;i++) scanf("%d",&a[i]);
      for (i=0;i<n;i++) printf("%d/n",a[i]);
      system("pause");
}

 

/*一类转换函数,只是一种思路*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
long val(char *s)
{
     int i,j;
     long sum=0;
     for (i=0;i<strlen(s);i++)
     sum=sum*10+(s[i]-'0');/*brackets make formula clearer*/ 
     return sum;
}

 

/*字符串截取,模拟VB6里面的mid(string,start,length)函数,但是实现得效果一般,由于C语言不能整体传输字符串,只能通过地址,数组等实现,参数比较多*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*save from origin[start] to origin[start+count] in target
variable meaning:
         origin: original string
         target:target string you want to save the new string
         targetsize:max length of target string
         start:where to start get character
         count:how many character to get
error code:
        0x00 normal
        0x01 start <= 0
        0x02 count <= 0
        0x03 start>strlen(origin)
        0x04 count+start>strlen(origin)
        0x05 count>sizeof(target)
        */
int mid(char *origin,char *target,int targetsize,int start,int count)
{
     if (start<=0) return 0x01;
     else if (count<0) return 0x02;
          else if (start>strlen(origin)) return 0x03;
               else if (count+start-1>strlen(origin)) return 0x04;
                    else if (count>targetsize) return 0x05;
                         else 
                         {
                             int i=0;
                             start--;
                             while (i<count) target[i++]=origin[start++];
                             target[i]='/0';
                             return 0x00;
                         }
}

 

/*将数字转换成字符串,模拟VB6的str(value)函数,但是由于C语言不能整体传送字符串,使用参数传入字符串变量地址*/

void str(long num,char *s)
{
     int i,j;
     char temp;
     if (num<0) /*nagetive number*/
     {
         s[0]='-';
         num=-num;
         for (i=1;num!=0;i++,num=num/10) s[i]=num%10+'0';
         s[i]='/0'; /*s is in revered order*/
         for (i=1,j=strlen(s)-1;i<j;i++,j--)
         {
             temp=s[i];
             s[i]=s[j];
             s[j]=temp;
         } /*s is in order*/ 
     }
     else /*positive number*/ 
     {
         for (i=0;num!=0;i++,num=num/10) s[i]=num%10+'0';
         s[i]='/0'; /*s is in revered order*/ 
         for (i=0,j=strlen(s)-1;i<j;i++,j--)
         {
             temp=s[i];
             s[i]=s[j];
             s[j]=temp;
         } /*s is in order*/ 
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值