- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
//------------------
#define _rayaNumberToString(number, TNumber) \
rayaInt32 digitsCount = 0, strSize; \
TNumber digitsCountNum = RAYA_ABS(number); \
while(digitsCountNum > 0){ digitsCount++; digitsCountNum/=10; }; \
\
strSize = digitsCount + (number<=0); \
rayaString str = {malloc(sizeof(rayaCharCode)*strSize+1), strSize}; \
str.chars[str.size]='\0'; \
if(number < 0) str.chars[0]='-'; \
if(number == 0) str.chars[0]='0'; \
\
rayaInt32 start = str.size-digitsCount; \
rayaInt64 numberX = RAYA_ABS(number); \
for(int i=str.size-1; i >= start; i--) { \
str.chars[i] = '0' + RAYA_ABS(numberX-((numberX/10)*10)); \
numberX /= 10; \
}; \
return str; \
rayaString _rayaRemoveExcessZeroes(rayaString str) {
int newStart = 0;
int indexStart = (str.chars[0]=='-' || str.chars[0]=='+');
for(int i = indexStart; i < str.size; i++) {
if(str.chars[i] != '0'){ newStart = i; break; }
}
rayaInt32 newSize = str.size - newStart;
rayaString newStr ;
newStr.chars = malloc( sizeof(rayaCharCode)*(newSize+1) );
newStr.size = newSize;
newStr.chars[newSize] = '\0';
int newIndex = 0;
for(int i = newStart; i < str.size; i++) {
newStr.chars[i-newStart] = str.chars[i];
newIndex++;
}
return newStr;
};
rayaString _rayaIntToString(rayaInt64 num) {
_rayaNumberToString(num,rayaInt64);
};
gost 29.12.2015 23:28 # +1
Мне кажется, или каждый, кто пишет на си(++), должен хоть раз в жизни назвать переменную таким образом?
bormand 29.12.2015 23:59 # 0
Antervis 11.01.2016 05:49 # 0