C> opération de chaîne> Implémentation à mettre dans char [] avec le chiffre spécifié

Je veux mettre une valeur numérique dans char [] avec le nombre de chiffres spécifié. Lorsque le nombre de chiffres est petit, placez un espace (0x20) devant. Considérez l'environnement dans lequel sprintf () ne peut pas être utilisé.

try1 (nombres positifs uniquement)

#include <stdio.h>

void SetValToCharArray(int val, int length, char *dstPtr)
{
	int loop;
	int digit;
	int work;

	work = val;
	digit = 0;
	while(work > 0) {
		work /= 10;
		digit++;
	}
	
	for(loop=0; loop < (length-digit); loop++) {
		*dstPtr = ' ';
		dstPtr++;
	}

	dstPtr += (digit - 1);
	work = val;
	for(loop=0; loop< digit; loop++) {
		*dstPtr = (work % 10) + '0';
		work /= 10;
		dstPtr--;
	}
}

int main(void) {
	int val = 32768;
	char szBuf[10];
	
	memset(szBuf, 0, sizeof(szBuf) );

	SetValToCharArray(val, /*length=*/7, &szBuf[0]);
	printf("[%s]\n", szBuf); // [  32768]
	
	// for check
	sprintf(szBuf, "%7d", val);
	printf("[%s]\n", szBuf);
	return 0;
}

http://ideone.com/5b6usH

try2 (correspondant à des nombres négatifs)

Ce n'est pas un codage très clair, mais cela a fonctionné pour le moment.

#include <stdio.h>
#include <stdbool.h>

void SetValToCharArray(int val, int length, char *dstPtr)
{
	int loop;
	int digit;
	int work;
	
	bool minus = false;

	if (val < 0) {
		minus = true;
		val = (-val);
		length--;
	}

	work = val;
	digit = 0;
	while(work > 0) {
		work /= 10;
		digit++;
	}
	
	for(loop=0; loop < (length-digit); loop++) {
		*dstPtr = ' ';
		dstPtr++;
	}
	
	if (minus) {
	   	*dstPtr = '-';
	   	dstPtr++;
	}

	dstPtr += (digit - 1);
	work = val;
	for(loop=0; loop < digit; loop++) {
		*dstPtr = (work % 10) + '0';
		work /= 10;
		dstPtr--;
	}
}

int main(void) {
	int val = -271;
	char szBuf[10];
	
	memset(szBuf, 0, sizeof(szBuf) );

	SetValToCharArray(val, /*length=*/7, &szBuf[0]);
	printf("[%s]\n", szBuf); // [  32768]
	
	// for check
	sprintf(szBuf, "%7d", val);
	printf("[%s]\n", szBuf);
	return 0;
}

http://ideone.com/W7BqSz

Remarques

Lorsque la valeur est 0, cela devient comme suit. Je réfléchis à ce que je veux faire.

[    ]

Mise en œuvre pour le moment http://ideone.com/sIGRt4

Recommended Posts

C> opération de chaîne> Implémentation à mettre dans char [] avec le chiffre spécifié
Comment convertir / restaurer une chaîne avec [] en python
Comment supprimer la chaîne de caractères spécifiée avec la commande sed! !! !!
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Mettre le suffixe 2.11 dans la source avec ansible
Essayez de mettre des données dans MongoDB
Comment envelopper C en Python
6 façons d'enchaîner des objets en Python
Segfo avec 16 caractères en langage C
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
[Langage C] Je souhaite générer des nombres aléatoires dans la plage spécifiée
[Avec commentaire] Résoudre Fizz Buzz (équivalent au rang C de paiza) avec Python