【问题标题】:C - String concatenationC - 字符串连接
【发布时间】:2015-04-26 23:14:28
【问题描述】:

我正在尝试接收两个无符号整数,例如:

 int swap(unsigned char first, unsigned char second){


 }

这些无符号字符将是诸如“2”或“0”之类的数字。

我试图实现的目标是用这两个无符号字符连接创建一个字符“字符串”,并在末尾添加另一个零。

     printf("\n%u\n", first);
     printf("%u\n", second);
     unsigned char zero = "0";
     printf("%u\n", zero); 

     char *string;
     char zero = 0;
     strcat(string, first);
     strcat(string, second);
     strcat(string, zero);
     printf("String: %s", string);

在这种情况下,如果第一个是“0”,第二个是“2”,我希望输出字符串是“020”,这样我就可以将它从十六进制转换为整数。我在网上看到我可以通过这种 char 'string' 形式来做到这一点。

【问题讨论】:

  • 我不明白 swap() 函数与 parse_hex() 函数的实现有什么关系...我也不明白显示的任何代码与其中任何一个有什么关系那些东西。
  • 首先是无符号整数,然后是无符号字符,然后是交换,然后是十六进制......很久以前你把我弄丢了......

标签: c string concatenation


【解决方案1】:

工作量太大。

char result[4];
result[0] = first;
result[1] = second;
result[2] = '0';
result[3] = '\0';

【讨论】:

  • 如何在一个打印语句中打印整个结果?这很好用,谢谢
  • 通过打印result。这是一个字符串。
  • 字符结果[4];结果 [0] = 第一个;结果[1] = 第二;结果[2] = '0';结果[3] = '\0'; printf("结果: %s", 结果);结果被打印为空。
  • 那么firstsecond 并不是你想象的那样。
  • 那么它们是 '2' 和 '0',还是 2 和 0?
【解决方案2】:

我认为在将变量 first 和 second 解析为函数之前,您应该首先将它们转换为 char。因此,一种方法是先使用 sprintf(),然后再提取第一个和第二个。所以它是这样的:

int urNumber = 20; //example
int Length;
char *buffer;

Length = sprintf(buffer, "%d", urNumber);
if(Length == 2)
{
swap(buffer[0], buffer[1]);
}

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多