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