You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:05:11