関数に送信と整数が必要で、それを定数文字の末尾に追加します。
int main (void)
{
append(1);
}
int append(int input)
{
const char P = 'P';
//This where I want to append 1 to P to create "P1"'
}
関数に送信と整数が必要で、それを定数文字の末尾に追加します。
int main (void)
{
append(1);
}
int append(int input)
{
const char P = 'P';
//This where I want to append 1 to P to create "P1"'
}
何をするにしても、数値を文字列に変換する必要があります。そうしないと、両方の数値を含む文字列を作成できません。
実際には、連結と int から文字列への変換の両方を 1 つの関数呼び出しで組み合わせることができます: sprintf
:
char output[16];
sprintf(output, "P%d", input);
数値を文字列に変換します(この例で呼び出される関数にアクセスできると仮定して、itoa
それを文字に連結します。アクセスできないitoa
場合は、代わりに変換できsprintf
ます。
itoaメソッド:
#include <stdio.h>
#include <stdlib.h>
char *foo(const char ch, const int i)
{
char *num, *ret;
int c = i;
if(c <= 0) c++;
if(c == 0) c++;
while(c != 0)
{
c++;
c /= 10;
}
c += 1;
if(!(num = malloc(c)))
{
fputs("Memory allocation failed.", stderr);
exit(1);
}
if(!(ret = malloc(c + 1)))
{
fputs("Memory allocation failed.", stderr);
free(num);
exit(1);
}
itoa(i, num, 10);
ret[0] = ch;
ret[1] = 0x00;
strcat(ret, num);
free(num);
return ret;
}
int main(void)
{
char *result;
if(!(result = foo('C', 20))) exit(1);
puts(result);
free(result);
return 0;
}
sprintfメソッド:
#include <stdio.h>
#include <stdlib.h>
char *foo(const char ch, const int i)
{
char *num, *ret;
int c = i;
if(c <= 0) c++;
if(c == 0) c++;
while(c != 0)
{
c++;
c /= 10;
}
c += 1;
if(!(num = malloc(c)))
{
fputs("Memory allocation failed.", stderr);
exit(1);
}
if(!(ret = malloc(c + 1)))
{
fputs("Memory allocation failed.", stderr);
free(num);
exit(1);
}
sprintf(num, "%d", i);
ret[0] = ch;
ret[1] = 0x00;
strcat(ret, num);
free(num);
return ret;
}
int main(void)
{
char *result;
if(!(result = foo('C', 20))) exit(1);
puts(result);
free(result);
return 0;
}
私はこれらの両方をコンパイルしてテストしましたが、非常にうまく機能しているようです。幸運を。
を使用するのはstrncat
どうですか?
codepad の実際の例を参照してください: http://codepad.org/xdwH0ss
私は C の専門家ではありませんが、一度定義した定数を変更する必要はないと思います。
に複数の文字値を割り当てることはできませんchar
。そのためには、文字列を取得する必要があります。多分このように。
int append(int input)
{
const char P = 'P';
//This where I want to append 1 to P to create "P1"
char app[2] ; //extend that for your no. of digits
app[0] = P '
app[1] = (char) input ;
}
これは一桁分です。大きな整数に動的メモリを割り当てて、ループで同じことを行うことができます。
const チャットに何かを追加できるかどうかはわかりません (const であるため)。
しかし、そうではありません:
char p[3];
sprintf(p, "P%d",input);