2016-02-26 100 views
1

我對C非常陌生。我想用3個整數和「/」構造一個字符串。如何在c中使用int變量創建字符串變量

例如,

int a=01; 
int b=10; 
int c=2012; 

char date = "a/b/c"; 

您可以請幫助,讓我知道什麼是正確的方法來做到這一點。

在此先感謝

+1

您不能在'char'中存儲字符串,該字符只能包含一個字符(通常爲一個字節)。 – MikeCAT

+1

簡單地說:字符串是由'字符'的'數組'。 – nullpointer

回答

0

試試這個:

#include <stdio.h> 

int main() 
{ 
    int a=1; 
    int b=10; 
    int c=2012; 
    char date[11]; 

    sprintf(date, "%d/%d/%d", a, b, c); 
    printf("%s\n", date); 

    sprintf(date, "%02d/%02d/%04d", a, b, c); 
    printf("%s\n", date); 

    return 0; 
} 

這將打印日期兩種格式。第二個零墊,而第一個沒有。下面是輸出:

1/10/2012 
01/10/2012 
+1

您應該在代碼的頂部添加'#include '以使用'printf()'和'sprintf()'。 – MikeCAT

+0

@MikeCAT謝謝,我在我的代碼中有這個,但是當我複製/粘貼時錯過了它。我添加了它。 –

+0

非常感謝。有效 ! – Pri

1

您應該分配足夠的緩衝區,並使用sprintf()

int a=01; /* this is octal value */ 
int b=10; 
int c=2012; 

char date[40]; /* 32-bit long integer will be at most 11 digits including sign in decimal */ 
sprintf(date, "%d/%d/%d", a, b, c); 
+0

非常感謝。有效 ! – Pri

0

使用sprintf,這將寫入字符串,顧名思義:string print function

sprintf(date, "%d/%d/%d", a, b, c); 

,幷包括頭stdio.h

而且,這樣做

char date; 

使得date一個角色,但你希望它是一個字符串。因此在其中分配內存:

char date [10]; 

它使它成爲一個字符串或一個包含10個元素的字符數組。但是,您只能存儲9個字符,因爲您必須爲null終止符或\0保留一個元素。


如何sprintf工作?

如果你困惑什麼sprintf在做,基本上第一個參數就是sprintf是印刷,第二個參數是要打印的內容,第三,第四,等參數都將被替換的變量由%d%s

爲了更好地解釋,請參閱this

C庫函數sprintf()用於存儲格式的數據爲字符串。您也可以說sprintf()函數用於使用格式化數據創建字符串作爲輸出。該sprintf()函數的語法如下:

int sprintf (char *string, const char *form, …); 

您還可以使用itoa,但它不是標準。

+0

非常感謝。有效 ! – Pri