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