C语言输入全名后无法输出,是否需要使用void关键字?
问题分析与解决方案
嘿,咱们先捋捋你代码里的几个核心问题,再解答你关于void的疑问~
首先,你的代码里有几个关键错误导致无法正常工作:
- 存储名字的类型完全错了:
int是用来存整数的,而名字是字符串,得用char数组(比如char first[50])来存储,这样才能容纳多个字符。 scanf的参数不对:用%s读取字符串时,需要传入char*类型的地址。如果是char数组,数组名本身就代表它的首地址,所以不需要加&;你之前传&first(int*类型),和%s要求的类型不匹配,会导致内存读写错误。printf缺少要打印的变量:你最后的printf里只有格式化标记%s,但没传入对应的变量,而且全名需要同时打印名和姓,应该用两个%s分别对应。
修正后的代码
#include <stdio.h> #include <stdlib.h> int main() { // 用char数组存储名字,50是足够容纳大多数名字的长度 char first[50]; printf("Write Down Your First Name!\n\n"); // 数组名直接传,不需要& scanf("%s", first); char last[50]; printf("\nNow Write Your Sir Name!\n\n"); scanf("%s", last); // 用两个%s分别打印名和姓,中间加空格分隔 printf("\nYour Full Name is %s %s\n\n", first, last); system("pause"); return 0; }
关于是否使用void的疑问
完全不需要把main改成void main()!C语言的标准规定main函数的返回类型是int,返回0表示程序正常执行完毕。虽然有些编译器支持void main,但这是非标准写法,不推荐使用,保持int main()就好。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

