如何使 bash 提示在 vs 代码的新行开始?
Posted
技术标签:
【中文标题】如何使 bash 提示在 vs 代码的新行开始?【英文标题】:How to make bash prompt start at new line in vs code? 【发布时间】:2022-01-22 00:46:10 【问题描述】:我目前使用的是 ubuntu 21.04。我在我的 Visual Studio Code 上运行 C 代码,但我的 bash 提示是从输出的末尾开始的。我想从新行开始 bash 提示符。
代码:
#include<stdio.h>
void main()
int i=0;
char str1[20],str2[20];
printf("Enter a string: ");
scanf("%s",str1);
while (str1[i]!='\0')
str2[i]=str1[i];
i++;
printf("The copy of string is: %s",str2);
OUTPUT:
【问题讨论】:
你可能想要一个尾随的新行:"The copy of string is: %s\n"
。
我知道,但我必须更改我的每一个代码。我的 windows bash 提示曾经从新行自动启动,但在 ubuntu 中它不起作用。
好吧,反正你的程序是不安全的,所以无论如何你都得去碰它。当然,您可以配置您的提示,使其每次都以换行符开头,但是在每个“表现良好”的程序之后都会得到一个空行,它确实会以换行符终止其输出。也许你最好修复自己的程序。
【参考方案1】:
您的源代码有错误,结果字符串不是以 NULL 结尾的。您必须复制 str2
中终止的“\0”。一个可能的解决方法是:
#include<stdio.h>
void main()
int i=0;
char str1[20],str2[20];
printf("Enter a string: ");
scanf("%s",str1);
do
str2[i]=str1[i];
while (str1[i++]!='\0');
printf("The copy of string is: %s",str2);
但后者仍然不安全:检查i
的最大值以避免str2
中的溢出。
那么,它在 Ubuntu 下的工作方式是一致的:如果字符串中没有终止换行符,则不会显示换行符。因此,shell 中的以下提示将显示在光标的最后一个位置。
如果您想在结果字符串中添加一个新行,可以以printf()
格式添加它,或者使用fgets()
而不是scanf()
在源字符串中获取它,以将运算符键入的返回值输入@ 987654328@ 如手册中所述:
fgets() 从流中最多读入一个小于 size 的字符并将它们存储到 s 指向的缓冲区中。 EOF 后停止读取 或换行符。如果读取了换行符,则将其存储到缓冲区中。终止空字节('\0')存储在最后一个字符之后 缓冲区。
这是一个用法示例:
#include<stdio.h>
void main()
int i=0;
char str1[20],str2[20];
printf("Enter a string: ");
fgets(str1, sizeof(str1), stdin);
do
str2[i]=str1[i];
while (str1[i++]!='\0');
printf("The copy of string is: %s",str2);
例子:
$ gcc scan.c -o scan
$ ./scan
Enter a string: qwerty
The copy of string is: qwerty
$
【讨论】:
感谢您的帮助。它确实有效,但为什么即使使用简单的 hello world 程序也会发生这种情况?我希望我的 bash 提示符从新行开始。以上是关于如何使 bash 提示在 vs 代码的新行开始?的主要内容,如果未能解决你的问题,请参考以下文章