Home > OS >  How to format a String from "2" to "02" in c
How to format a String from "2" to "02" in c

Time:02-19

This is my code:

#include <stdio.h>
#include <string.h>

#define VERSION "2.16.0.0"

int main ()
{
//char buf[] ="2.16.0.0";
int i = 0;
int j ;

char letter[8];

//char a[] = VERSION;

for(i=0;i<8;i  )
{
     letter[i] = VERSION[i];
}
char *array;
char* copy = letter ;
 while ((array = strtok_r(copy, ".", &copy)))
     printf("%s\n", array);

        printf("%s", array);
}

I split the macro to 2 16 0 0.

Now, I want to format it to 02 16 00 00. How do I do it? I tried using sprintf() function to format the array but that didn't work out, any other way?

CodePudding user response:

Your program can be simplified in several ways (see below) and I have to point out at least one significant error since the copy of the string in letter does not include the terminating 0.

About how to print, as I understand you would like to print the numerical entries with 2 digits. One method to do that is to convert them to integers and format the output using the printf formatting options:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define VERSION "2.16.0.0"

int main ()
{
    char *element;
    char copy[] = VERSION;
    element = strtok(copy, ".");
    while (element != NULL)
    {
        printf("d ", atoi(element));
        element = strtok(NULL, ".");
    }
}

CodePudding user response:

I can't comment, so I post it as an answer I think you should use not char array, It is better to use int array, you can convert char to int with atoi function.

  •  Tags:  
  • c
  • Related