下面给出的代码是否错误? #包括 int main() { INTA; printf(scanf(“%d”、&a)); 返回0; }
我收到消息“分段错误(堆芯转储)”您想打印“a”,所以您应该这样做下面给出的代码是否错误? #包括 int main() { INTA; printf(scanf(“%d”、&a)); 返回0; },c,gcc,C,Gcc,我收到消息“分段错误(堆芯转储)”您想打印“a”,所以您应该这样做 #include <stdio.h> int main() { int a; printf(scanf("%d",&a)); return 0; } scanf()返回写入的字符总数函数的printf()格式为:- scanf("%d",&a); printf("%d", a); 必须为函数printf()提供一个字符串(带格式说明符的格式字符串) 你可以尝试:- pri
#include <stdio.h>
int main()
{
int a;
printf(scanf("%d",&a));
return 0;
}
scanf()
返回写入的字符总数函数的printf()
格式为:-
scanf("%d",&a);
printf("%d", a);
必须为函数printf()
提供一个字符串(带格式说明符的格式字符串)
你可以尝试:-
printf(const char *format, ...)
如果扫描成功,将打印1。这里是%d
格式字符串,用于整数
参数
要读取和打印变量a
,请尝试:-
printf("%d",scanf("%d",&a)); // with format string
阅读编译器警告
scanf("%d",&a); // reading
printf("%d",a); // printing
printf
需要一个字符串作为第一个参数。您正在给它一个整数。scanf
查看您的格式字符串,查看%d
,并将其与int
的地址相匹配,该地址由&a
提供<如果尝试读取值时出现错误,code>scanf将返回EOF
,否则它将返回成功匹配的项数作为int
。例如,如果键入123
,scanf(“%d”,&a)==1
,但如果键入q123
,scanf(“%d”,&a)==0
,则为真
printf
需要一个类似于scanf
的格式字符串,它使用该格式打印参数的值。它无法知道用于scanf
的格式是否与您希望用于打印的格式相同,并且您没有提供一个字符串,它是一种指针,包含用于打印参数的格式。这就是代码的问题所在
整数(例如scanf
返回的int
值)可以转换为指针,而无需告诉编译器执行转换。因此,编译器可能会抱怨您正在做一些可能有问题的事情(警告:传递'printf'的参数1会使指针从整数变为不带强制转换的整数),但该代码将被允许编译和执行
当您看到这样的警告时,请查看该函数需要该参数的类型以及用作该参数的值的类型。很可能编译器正试图帮助您避免类似
printf(scanf(“%d”,&a))这样的错误代码>您将int返回从scanf传递到printf(),printf()需要一个字符串指针作为第一个参数:BANG。不要编写“聪明”的代码-它只会导致问题。您没有为printf
提供格式说明符。例如:printf(“%d”、scanf(“%d”和&a))代码>当然,它不会打印您认为会打印的内容。
prog.c:8:12: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [-Wint-conversion]
printf(scanf("%d",&a));
^~~~~