2013-11-26 5 views
-4

У меня есть небольшая проблема с литьем int char * (string) ... возможно ли это в C? Я попытаюсь объяснить, зачем мне это нужно.Кастинг int char *

Я могу использовать int для char, но мне нужно использовать int для char *.

У меня был int varriable (int number_of_revisions) , и мне нужно преобразовать это количество исправлений в char * becouse Мне нужно создать имя файла, а номер версии - часть имени .... так что есть часть кода для лучшего воображения этой проблемы.

int number_of_revision = 970; // 970 just for example 
char * version; 
char * new_name; 
char ch_number_of_rev[4]; 

version = "0."; 
itoa(number_of_revision,ch_number_of_rev,10); 
//strcat(version, ch_num_o_rev); // doesn't work becouse ch_number_of_rev is char and strcat requires char* 

, пожалуйста, мне нужна быстрая помощь ... Есть ли у кого-нибудь идеи, как это сделать? ...

ответ

3

but I need cast int to char*

Кастинг только изменяет тип - это не меняет значение в переменной. Если вам необходимо преобразовать int в массив символов (то есть строки), а затем использовать sprintf или snprintf:

char* buffer = ... allocate a buffer ... 
int value = 970; 
sprintf(buffer, "%d", value); 

Converting int to string in c

Кроме того, вы не выделили какую-либо памяти для version - использование таНоса и выделить некоторые Память.

+0

Мне не нужно изменять значение. Мне нужно преобразовать int в char * или сохранить его на нем isoa (number_of_revision, ch_number_of_rev, 10); но тогда мне понадобится переменная с переменными, которая является char * с переменной ch_number_of_revision, которая является char .... – user3036674

+0

@ user3036674 - код, который я написал, делает то, что вы хотите, я считаю. Протестируйте его один раз. – Sadique

+0

Спасибо, я попробую sprintf() :) – user3036674

1

strcat здесь не будет работать, потому что вы не выделили места для хранения результата. Ваш version, вероятно, в постоянной памяти, так что вы получите segfault, иначе вы получите повреждение памяти , Поэтому не забудьте выделить для этого достаточно места, например. используя

char version[10] = "0."; 

Возможно, вы захотите сначала прочитать указатели.

+0

Ok Я выделил память для «версии», и ничего не изменилось .... – user3036674

+0

Хорошо, я окончательно решил это. Спасибо, ребята, за помощь. сделал: char version [40]; char buffer [4]; int value = 970; sprintf (buffer, "% d", value); strcat (версия, буфер); – user3036674

Смежные вопросы