2014-10-28 86 views
-1

我需要將int轉換爲char *。我到處都是眼睛,但我一直未能找到任何幫助。如何將C中的int轉換爲char *?

這裏是我的代碼

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 2014-10-28 19:10:04

+0

這種情況下的其他選項將使用sprintf()。 – 2014-10-28 19:16:37

0

execl(),因爲大多數POSIX API的,接受空終止字符串,而不是單個人物。要傳遞一個字符串,你需要分配char str[2]之類的東西,然後做str[0] = (char); str[1] = '\0'

0

要轉換intchar *,使用(由@Punit瑞裏建議)sprintf()snprintf()

#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()

​​