0

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

4

2 回答 2

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.

于 2013-09-09T07:04:39.840 回答
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

于 2013-09-09T21:17:49.137 回答