C 字符 lin1[] = "1234"; PrintF 作为整数
C Char lin1[] = "1234"; PrintF as integer
所以我有这个问题我有以下代码:
char lin1[] = "1234";
printf("main(): %d\n", __________); // Sould print 1234 from lin1 as an integer
我的目标是在不使用 atoi 或 strtol 的情况下使用 printf 将 lin1 打印为整数。
所以输出应该是1234
我试过了
printf("main() %d\n", lin1 -'0');
但它不起作用解决方案应该与它类似,因为这是一个简单的练习,但我没有看到它!
你的策略是正确的,但你必须一个字符一个字符地执行...
char lin1[] = "1234";
int i;
printf("main(): ");
for(i = 0; lin1[i]; i++)
printf("%d", lin1[i] - '0');
基本上只是将字符串转换为数字。我还包括检查字符串是否真的是 4 位数字:
char lin1[] = "1234";
printf("main(): %d\n",
(
isdigit(lin1[0]) &&
isdigit(lin1[1]) &&
isdigit(lin1[2]) &&
isdigit(lin1[3]) &&
lin1[4] == '[=10=]'
) ?
(lin1[0]-'0')*1000 +
(lin1[1]-'0')*100 +
(lin1[2]-'0')*10 +
(lin1[3]-'0')*1
:
-1
);
注意:您应该将 char
转换为 unsigned char
以使 isdigit
超级便携。见前 wiki.sei STR37-C
所以我有这个问题我有以下代码:
char lin1[] = "1234";
printf("main(): %d\n", __________); // Sould print 1234 from lin1 as an integer
我的目标是在不使用 atoi 或 strtol 的情况下使用 printf 将 lin1 打印为整数。
所以输出应该是1234
我试过了
printf("main() %d\n", lin1 -'0');
但它不起作用解决方案应该与它类似,因为这是一个简单的练习,但我没有看到它!
你的策略是正确的,但你必须一个字符一个字符地执行...
char lin1[] = "1234";
int i;
printf("main(): ");
for(i = 0; lin1[i]; i++)
printf("%d", lin1[i] - '0');
基本上只是将字符串转换为数字。我还包括检查字符串是否真的是 4 位数字:
char lin1[] = "1234";
printf("main(): %d\n",
(
isdigit(lin1[0]) &&
isdigit(lin1[1]) &&
isdigit(lin1[2]) &&
isdigit(lin1[3]) &&
lin1[4] == '[=10=]'
) ?
(lin1[0]-'0')*1000 +
(lin1[1]-'0')*100 +
(lin1[2]-'0')*10 +
(lin1[3]-'0')*1
:
-1
);
注意:您应该将 char
转换为 unsigned char
以使 isdigit
超级便携。见前 wiki.sei STR37-C