如何使 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 代码的新行开始?的主要内容,如果未能解决你的问题,请参考以下文章

bash 中的 awk 命令:如何停止添加新行?

VS2010调试C的代码老是提示此项目过期

如何使内联元素出现在新行上,或者块元素不占据整行?

如何在bash中将空格替换为新行[重复]

如何设置VS2005的代码智能提示?

如何在 Chrome 控制台窗口中开始新行?