2014-10-28 7 views
-1

Мне нужно преобразовать int в char *. Я везде смотрю, но я не смог найти никакой помощи.Как преобразовать int в char * в C?

Вот мой код

int int_1, int_2; 
char sign; 
char int1, int2; 
printf("Addition or Subtration of two integers (a (+ or -) b)\n"); 
printf("> "); 

scanf("%d %s %d", &int_1, &sign, &int_2); 
printf("%d %c %d\n", int_1, sign, int_2); 

Я попытался литья int1 = (char)int_1, но это не сработало. Я попытался ввести непосредственно в char *, но это не работает. Причина, по которой мне это нужно, - использовать системный вызов execl (http://linux.die.net/man/3/execl). Это аргументы - все char *. Я должен назвать execl следующим образом

execl("filepath", "server", &int1, &sign, &int2, NULL); 

Справка очень ценится. Спасибо.

ответ

0

Если вы собираетесь использовать пользовательский ввод как char *, не нужно сканировать их как целые числа. вы попробуете это.

char int1[8], int2[8]; //allocate more space for larger numbers 

scanf("%s %s %s", int1, &sign, int2); 

после этого вы можете вызвать exec.

execl("filepath", "server", int1, &sign, int2, NULL); 
+0

Я думал об этом, но тогда это опять не лучшее решение. – Pete

+0

Другим вариантом в этом случае будет использование sprintf(). –

0

execl(), так как большинство из POSIX API, принимает нулевые байты, а не одиночные символов. Чтобы передать строку одного символа, вам нужно выделить что-то вроде char str[2], а затем сделать str[0] = (char) все, что угодно ; str[1] = '\0'.

0

преобразовать int в char *, используйте sprintf() или snprintf() (предложенный @Punit Soni)

#include <limits.h> 
#include <stdio.h> 

// Size buffer to the maximum needs which is about 3 bits/char plus a few. 
#define INT_PRINT_SIZE(type) (sizeof (type) * CHAR_BIT/3 + 3) 

int int_1; 
char buf1[INT_PRINT_SIZE(int_1)]; 
sprintf(buf1, "%d", int_1); 

Затем вызовите ваш excel()

execl("filepath", "server", buf1, ...` 
Смежные вопросы