*嗯,突发奇想地想把想到的和学到的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*/
}
}