在Visual Studio 2017的C#控制台应用中无法使用stdio.h求助
解决C#控制台应用无法使用
stdio.h的问题 Hey there! I totally get where you're coming from—when you're switching from C/C++ to C#, it's easy to bring over old habits. Let's clear this up quickly:
为什么stdio.h在C#里用不了?
stdio.h是C和C++的标准输入输出头文件,属于原生非托管语言的工具。而C#是基于.NET框架的托管语言,有自己独立的标准库体系,和C/C++的头文件系统完全不兼容。简单说,这俩根本不是一个生态的东西,所以你在C#项目里引用它肯定会报错。
C#里替代stdio.h的方案
在C#中,控制台的输入输出都是通过System.Console类来实现的,这是C#自带的标准工具,完全能满足你用printf、scanf这类函数的需求。这里给你几个常用的替代方法:
输出内容(替代
printf/puts):Console.WriteLine("文本内容");:输出内容并换行Console.Write("文本内容");:输出内容不换行- 还支持字符串插值,比如
Console.WriteLine($"你好,{username}!");,比printf的格式化更直观
读取输入(替代
scanf/gets):Console.ReadLine();:读取用户输入的一行字符串Console.ReadKey();:读取单个按键(比如等待用户按任意键继续)- 如果需要读取数值类型,可以用
int.Parse(Console.ReadLine())或者int.TryParse(Console.ReadLine(), out int result)来转换
简单示例代码
using System; // 必须引入这个命名空间才能用Console类 namespace MyFirstCSharpApp { class Program { static void Main(string[] args) { // 输出欢迎信息 Console.WriteLine("欢迎来到C#控制台应用!"); // 读取用户输入的名字 Console.Write("请输入你的名字:"); string userName = Console.ReadLine(); // 格式化输出问候语 Console.WriteLine($"很高兴认识你,{userName}!"); // 等待用户按键再退出 Console.WriteLine("按任意键退出..."); Console.ReadKey(); } } }
小提示
刚学C#的时候,尽量放下C/C的思维定式,多去了解.NET的标准库(比如System命名空间下的各种类),这会让你更快适应C#的开发方式。如果以后需要和C/C代码交互,C#也有专门的互操作方式,但那是进阶内容,现阶段先专注于C#本身的语法和库就好。
内容的提问来源于stack exchange,提问作者JangoFrost
相关产品推荐
相关产品推荐

