我需要send和integer到一个函数,然后将它追加到一个常量字符的末尾。
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"'
}
答案 0 :(得分:5)
无论你做什么,都需要将数字转换为字符串,否则你不能创建包含这两个数字的字符串。
您实际上可以在一个函数调用中结合连接和int到字符串的转换:sprintf
:
char output[16];
sprintf(output, "P%d", input);
答案 1 :(得分:0)
我不是C的专家,但我不相信常量一旦定义就应该改变。
答案 2 :(得分:0)
您无法为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 ;
}
这是一位数。您可以为大整数分配动态内存,并在循环中执行相同的操作。
答案 3 :(得分:0)
不确定是否可以向const聊天添加内容(因为它是一个const)。
但为什么不呢:
char p[3];
sprintf(p, "P%d",input);
答案 4 :(得分:0)
如何使用strncat
?
请参阅键盘上的工作示例:http://codepad.org/xdwhH0ss
答案 5 :(得分:0)
我会将数字转换为字符串(假设您在此示例中可以访问名为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;
}
我编译并测试了这两者,它们似乎工作得非常好。祝你好运。