How to write a variadic function that takes integers and returns them in a string with C

2 Answers

0 votes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>

char* IntegersToString(int total, ...) {
    char str[8] = "";
    char* result = malloc(total * sizeof(int) + 1);
    va_list args;
    va_start(args, total);

    for (int i = 0; i < total; i++) {
        int n = va_arg(args, int);
        _itoa(n, str, 10);
        if (i == 0) 
            strcpy(result, str);
        else
            strcat(result, str);
    }
    va_end(args);

    return result;
}

int main()
{
    char* s = IntegersToString(4, 45, 90, 80, 77);
    
    printf("%s", s);
    
    free(s);

    return 0;
}





/*
run:
 
45908077
 
*/

 



answered Dec 7, 2022 by avibootz
0 votes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>

char* IntegersToString(int total, ...) {
	char str[8] = "";
	char* result = malloc(total * sizeof(int) + 1);
	result[0] = '\0';
	va_list args;
	va_start(args, total);

	for (int i = 0; i < total; i++) {
		int n = va_arg(args, int);
		_itoa(n, str, 10);
		strcat(result, str);
	}
	va_end(args);

	return result;
}

int main()
{
	char* s = IntegersToString(4, 45, 90, 80, 77);

	printf("%s", s);

	free(s);

	return 0;
}





/*
run:
  
45908077
  
*/

 



answered Dec 7, 2022 by avibootz
...