Notepad++ 和 NppExe 没有显示输出
Notepad++ and NppExe not showing me an output
我想学习 C。我想让我的 notepad++ 编译和 运行 我的 .c 文件。我已经做了需要做的事情。我正在使用 MinGW 并添加了插件。我添加了这个提示:
npp_save
cd "$(CURRENT_DIRECTORY)"
gcc -Wall -Werror "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)
但每当我去编译和 运行 时,都会出现一个命令提示符并接受所有输入。但是当需要向我展示时,输出命令提示符关闭。此外,在记事本++中嵌入的控制台上也没有输出。然后我必须使用 Windows cmd 来执行。有人可以帮帮我吗。我是初学者。
例如,看看这个:
#include <stdio.h>
/* Note: Program assumes years are in the same century. */
int main(void)
{
int month1, day1, year1, month2, day2, year2;
int first_earlier = 0;
printf("Enter first date (mm/dd/yy): ");
scanf("%d/%d/%d", &month1, &day1, &year1);
printf("Enter second date (mm/dd/yy): ");
scanf("%d/%d/%d", &month2, &day2, &year2);
if (year1 != year2)
first_earlier = year1 < year2;
else if (month1 != month2)
first_earlier = month1 < month2;
else
first_earlier = day1 < day2;
if (first_earlier)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month1, day1, year1, month2, day2, year2);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n",month2, day2, year2, month1, day1, year1);
getchar();
return 0;
}
当按 F6 时,会出现命令提示符,它会询问日期,当输入第二个日期后按 Enter 时,提示符会关闭,而不会在任何地方显示输出。
首先,g++
是C++编译器。如果你有 C 代码,那么你必须
使用 gcc
编译 C 代码。
我不太明白你的意思出现命令提示符并执行
所有输入,但从控制台关闭的行为来看
立即,那么这是因为控制台在程序结束后立即关闭
退出。
双击(控制台)可执行文件时,会生成一个终端,
它执行您的程序(不是命令行)。终端的正常行为是,当
执行的程序存在,终端关闭。这也会发生在
通过您的 IDE.
启动程序
如你所见,如果你打开一个终端并从那里执行它,终端
保持打开状态,因为命令行仍然处于活动状态1.
如果你想通过双击或IDE启动一个程序,那么你必须
确保您的程序不会立即退出。一个简单的方法是通过
让用户等待输入。
#include <stdio.h>
int main(void)
{
printf("hello world\n");
puts("Press Enter to continue...");
getchar();
return 0;
}
此处 getchar
将等待用户输入,并在用户点击 ENTER 后退出。这是通过以下方式启动控制台程序的解决方法
双击并 IDEs。但是我认为这是不好的做法,正确的方法
就是自己启动终端并自己执行程序。
许多终端都可以选择在
运行 节目结束。为此,您应该能够检查的设置
终端。有时 IDEs 在设置中也有一个复选框,您必须
检查以确保终端不会立即关闭。
编辑
最后getchar
之所以没有等待,是因为之前的
scanf
.
当您在命令行中输入内容时,还会添加一个换行符 ('\n'
)
到输入流。
scanf("%d/%d/%d", &month2, &day2, &year2);
如果格式正确,scanf
将消耗所有输入但留下
输入缓冲区中的换行符。最后一个 getchar()
将消耗换行符
已经在缓冲区中,因此它不会等待更多用户
输入。
您必须清除输入缓冲区。在 main
:
之前添加这个函数
void clear_stdin(void)
{
int c;
while((c = getchar()) != '\n' && c != EOF);
}
在scanf
调用之后调用它:
printf("Enter first date (mm/dd/yy): ");
scanf("%d/%d/%d", &month1, &day1, &year1);
clear_stdin();
printf("Enter second date (mm/dd/yy): ");
scanf("%d/%d/%d", &month2, &day2, &year2);
clear_stdin();
现在输入缓冲区已清除,最后一个getchar
将等待更多用户
输入,您的程序将阻塞,直到您按 ENTER。
注释
1请注意,终端(控制台)与命令不同
线。终端是显示文本并允许用户使用的程序
用键盘打字。命令行只是一个程序,它允许您
输入命令并启动程序。在 Windows 中,命令行是 cmd.exe
称为命令行,主要在 C:\Windows\System32
.
中找到
默认设置是当你打开终端时不告诉是哪个
命令执行,会自动打开一个命令行,在Windows会
默认为 cmd.exe
。
我想学习 C。我想让我的 notepad++ 编译和 运行 我的 .c 文件。我已经做了需要做的事情。我正在使用 MinGW 并添加了插件。我添加了这个提示:
npp_save
cd "$(CURRENT_DIRECTORY)"
gcc -Wall -Werror "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)
但每当我去编译和 运行 时,都会出现一个命令提示符并接受所有输入。但是当需要向我展示时,输出命令提示符关闭。此外,在记事本++中嵌入的控制台上也没有输出。然后我必须使用 Windows cmd 来执行。有人可以帮帮我吗。我是初学者。
例如,看看这个:
#include <stdio.h>
/* Note: Program assumes years are in the same century. */
int main(void)
{
int month1, day1, year1, month2, day2, year2;
int first_earlier = 0;
printf("Enter first date (mm/dd/yy): ");
scanf("%d/%d/%d", &month1, &day1, &year1);
printf("Enter second date (mm/dd/yy): ");
scanf("%d/%d/%d", &month2, &day2, &year2);
if (year1 != year2)
first_earlier = year1 < year2;
else if (month1 != month2)
first_earlier = month1 < month2;
else
first_earlier = day1 < day2;
if (first_earlier)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month1, day1, year1, month2, day2, year2);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n",month2, day2, year2, month1, day1, year1);
getchar();
return 0;
}
当按 F6 时,会出现命令提示符,它会询问日期,当输入第二个日期后按 Enter 时,提示符会关闭,而不会在任何地方显示输出。
首先,g++
是C++编译器。如果你有 C 代码,那么你必须
使用 gcc
编译 C 代码。
我不太明白你的意思出现命令提示符并执行 所有输入,但从控制台关闭的行为来看 立即,那么这是因为控制台在程序结束后立即关闭 退出。
双击(控制台)可执行文件时,会生成一个终端, 它执行您的程序(不是命令行)。终端的正常行为是,当 执行的程序存在,终端关闭。这也会发生在 通过您的 IDE.
启动程序如你所见,如果你打开一个终端并从那里执行它,终端 保持打开状态,因为命令行仍然处于活动状态1.
如果你想通过双击或IDE启动一个程序,那么你必须 确保您的程序不会立即退出。一个简单的方法是通过 让用户等待输入。
#include <stdio.h>
int main(void)
{
printf("hello world\n");
puts("Press Enter to continue...");
getchar();
return 0;
}
此处 getchar
将等待用户输入,并在用户点击 ENTER 后退出。这是通过以下方式启动控制台程序的解决方法
双击并 IDEs。但是我认为这是不好的做法,正确的方法
就是自己启动终端并自己执行程序。
许多终端都可以选择在 运行 节目结束。为此,您应该能够检查的设置 终端。有时 IDEs 在设置中也有一个复选框,您必须 检查以确保终端不会立即关闭。
编辑
最后getchar
之所以没有等待,是因为之前的
scanf
.
当您在命令行中输入内容时,还会添加一个换行符 ('\n'
)
到输入流。
scanf("%d/%d/%d", &month2, &day2, &year2);
如果格式正确,scanf
将消耗所有输入但留下
输入缓冲区中的换行符。最后一个 getchar()
将消耗换行符
已经在缓冲区中,因此它不会等待更多用户
输入。
您必须清除输入缓冲区。在 main
:
void clear_stdin(void)
{
int c;
while((c = getchar()) != '\n' && c != EOF);
}
在scanf
调用之后调用它:
printf("Enter first date (mm/dd/yy): ");
scanf("%d/%d/%d", &month1, &day1, &year1);
clear_stdin();
printf("Enter second date (mm/dd/yy): ");
scanf("%d/%d/%d", &month2, &day2, &year2);
clear_stdin();
现在输入缓冲区已清除,最后一个getchar
将等待更多用户
输入,您的程序将阻塞,直到您按 ENTER。
注释
1请注意,终端(控制台)与命令不同
线。终端是显示文本并允许用户使用的程序
用键盘打字。命令行只是一个程序,它允许您
输入命令并启动程序。在 Windows 中,命令行是 cmd.exe
称为命令行,主要在 C:\Windows\System32
.
默认设置是当你打开终端时不告诉是哪个
命令执行,会自动打开一个命令行,在Windows会
默认为 cmd.exe
。