使用C语言system()函数打开记事本文件:Dev C++正常Turbo C报非法命令错误
问题分析与解决方案
我来帮你搞定这个问题,咱们一步步拆解:
首先先纠正代码里的一个小细节:C语言是大小写敏感的,你写的System()应该是小写的system()——不过看起来Dev C++可能在某些环境下兼容了这个错误,但Turbo C对语法要求更严格,这是个潜在问题,先改过来。
接下来是核心原因:Turbo C是非常老旧的编译器,它运行在DOS环境(或者DOSBox模拟的DOS环境)里,而DOS的命令规则和Windows的CMD完全不一样:
- 在Windows CMD里,直接输入一个文件路径(比如
C:\Example.txt),系统会自动调用关联的默认程序(比如记事本)打开它; - 但在DOS里,这个命令是无效的——DOS没有自动关联程序打开文件的机制,你必须明确告诉它要用哪个程序来打开文件。
所以修正后的代码应该是这样的:
#include<stdio.h> #include<stdlib.h> // 必须包含这个头文件,Turbo C里system()的声明在这里 void main() { // 明确调用记事本程序打开文件 system("notepad.exe C:\\Example.txt"); }
额外补充几个注意点:
- 如果你的DOS环境里找不到
notepad.exe(比如纯DOS系统,不是Windows下的DOS窗口),可以用DOS自带的edit命令替代:system("edit C:\\Example.txt") - 也可以写
notepad.exe的完整路径,比如system("C:\\WINDOWS\\NOTEPAD.EXE C:\\Example.txt"),确保系统能找到这个程序 - 别忘了
stdlib.h头文件,Turbo C不会自动包含它,缺少的话可能会出现函数未定义的错误
内容的提问来源于stack exchange,提问作者Lazy Man
相关产品推荐
相关产品推荐

