longDataMinus.c
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <assert.h>
#define MAX_DATA_LEN 1000
#define TRUE 1
#define FALSE 0
#define OK 0
#define ERROR -1
typedef struct{
int intNum;
int dotPos;
}IntDotInfo;
char* result = NULL;
int findIntBitCount(char* str)
{
int i=0,len;
len=strlen(str);
for(i=0;i<=len-1;++i)
{
if((str[i])=='.')
{
return i;
}
}
return i;
}
int findDotBitCount(char* str)
{
int len;
len=(int)strlen(str);
if(len ==findIntBitCount(str))
return 0;
else
return strlen(str)-findIntBitCount(str)-1;
}
int stringValueCompare(char *sub1,char* sub2)
{
int len_str1,len_str2;
int IntNum1=0,IntNum2=0;
len_str1=strlen(sub1);
len_str2=strlen(sub2);
IntNum1=findIntBitCount(sub1);
IntNum2=findIntBitCount(sub2);
if(IntNum1 < IntNum2)
return 1;
else if((IntNum1==IntNum2) && (sub1[0]<sub2[0]))
return 1;
return 0;
}
int isPositive(char* s)
{
if(s[0]=='-')
return FALSE;
else
return TRUE;
}
int getIntDotInfo(char* sub1,char* sub2,IntDotInfo *data1,IntDotInfo *data2)
{
if(sub1==NULL || sub2 == NULL)
return ERROR;
data1->intNum=findIntBitCount(sub1);
data1->dotPos=findDotBitCount(sub1);
data2->intNum=findIntBitCount(sub2);
data2->dotPos=findDotBitCount(sub2);
return OK;
}
int alignNZero(int n, char *s)
{
int i;
for(i=0;i<n;i++)
s[i]='0';
s[i]='