使用char和int时输出错误

时间:2018-10-23 12:57:35

标签: c printf scanf

编写一个简单的代码,该代码假定先扫描一个整数和一个字符,然后将其写出。 我的输入是1a,输出应该是1a,但是我在整数点上得到0。对c有一个非常基本的了解,因此可能已经错过了一些非常明显的东西,谢谢。

#include <stdio.h> 
int main()
 { 
   int a; 
   char b; 
   scanf("%d", &a); 
   scanf(" %s", &b); 
   printf("%d", a); 
   printf("%s", &b); 
 }

4 个答案:

答案 0 :(得分:0)

b是一个字符,%s用于字符串输入,因此在b之后添加尾随0可能会导致崩溃。使用%c输入字符。

答案 1 :(得分:0)

您基本上想要这样:

#include <stdio.h> 

int main()
{
  int a;
  char b[100];     // array of 100 chars

  scanf("%d", &a);
  scanf("%s", b);

  printf("%d", a);
  printf("%s", b);
}

要完全理解这一点,您需要阅读C课本中与scanf有关的章节和与字符串有关的章节。

答案 2 :(得分:0)

b是一个字符,因此将%s替换为%c

  1. scanf()在要存储指向该地址的变量之前,在变量前加上&。

2.printf()仅将值输出到该变量中存在的控制台。 从而无需在其中使用&

正确的代码:

    #include <stdio.h> 
    int main()
    { 
     int a; 
     char b; 
     scanf("%d", &a); 
     scanf(" %c", &b); 
     printf("%d", a); 
     printf("%c", b); 
     }

答案 3 :(得分:0)

您可以尝试:

#include <stdio.h>
int main()
 {
  int a;
  char b;
  scanf("%d", &a);
  scanf(" %c", &b);
  printf("%d", a);
  printf("%c", b);
 }