char数组中的整数

时间:2013-09-09 07:00:19

标签: c int printf arrays

我想知道如何在char数组中处理整数。例如,当我们使用scanf()& printf()函数用于我们使用"%c"的单个字符,用于字符串值"%s"等。我使用"%s"来打印带有整数的char数组。但它会输出一些垃圾字符作为输出。

2 个答案:

答案 0 :(得分:0)

直接使用整数变量时,它很简单:

int i = 7;
printf("%d", i);

并且在处理一组字符时,您可以创建辅助函数,以便在char*< - >之间进行转换。 int以便您获得更便携的解决方案:

int toInt(unsigned char* p) {
    return *(p + 0) << 24 | *(p + 1) << 16 | *(p + 2) << 8 | *(p + 3);
}
...
unsigned char arr[4] = {0,0,0,4};
int i = toInt(&arr[0]);
printf("%d", i);

应打印4

或者你可以使用简单的演员:

unsigned char arr[4] = {0,0,0,4};
int* i = &arr[0];
printf("%d", *i);

但该解决方案将取决于字节顺序。在ideone.com上,它会打印67108864

答案 1 :(得分:0)

如果你知道每个电话号码的长度是相同的,你可以用零填充数字的前面。例如将每个数字填充到10位数,必要时将0放在前面:

int d = 123456789;
printf("%d\n", d); // prints 123456789
printf("%010d\n", d); // prints 0123456789

d = 12345678;
printf("%010d\n", d); // prints 0012345678 :-(

如果没有看到代码,很难猜到更多的要求。有很多使用printf格式化的例子,例如:http://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output