[GO] C> Zeichenfolgenoperation> Implementierung zum Einfügen von char [] mit der angegebenen Ziffer

Ich möchte einen numerischen Wert in char [] mit der angegebenen Anzahl von Ziffern einfügen. Wenn die Anzahl der Ziffern gering ist, setzen Sie ein Leerzeichen (0x20) vor. Betrachten Sie die Umgebung, in der sprintf () nicht verwendet werden kann.

try1 (nur positive Zahlen)

#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 (entspricht negativen Zahlen)

Es ist keine sehr saubere Codierung, aber es hat vorerst funktioniert.

#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

Bemerkungen

Wenn der Wert 0 ist, wird er wie folgt. Ich überlege, was ich tun möchte.

[    ]

Implementierung vorerst http://ideone.com/sIGRt4

Recommended Posts

C> Zeichenfolgenoperation> Implementierung zum Einfügen von char [] mit der angegebenen Ziffer
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So löschen Sie die angegebene Zeichenfolge mit dem Befehl sed! !! !!
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Setzen Sie Postfix 2.11 mit ansible in die Quelle
Versuchen Sie, Daten in MongoDB abzulegen
So verpacken Sie C in Python
6 Möglichkeiten zum Stringen von Objekten in Python
Segfo mit 16 Zeichen in C-Sprache
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
[C-Sprache] Ich möchte Zufallszahlen im angegebenen Bereich generieren
[Mit Kommentar] Löse Fizz Buzz (entspricht Paiza Rang C) mit Python