标签: buffer

vim >> 循环浏览目标分割中打开的所有缓冲区

我习惯了 IDE 风格的选项卡面板,并且在尝试使用缓冲区和拆分复制此功能时,我遇到了一些 arggghh 诱导场景。

我有以下相关的 .vimrc 设置:

set hidden
set switchbuf=useopen,usetab
Run Code Online (Sandbox Code Playgroud)

现在,假设我打开 4 个缓冲区,先垂直分割,然后水平分割,以便 1 个缓冲区显示在左侧,2 个缓冲区显示堆叠在右侧。第四个缓冲区是隐藏的(在左侧分割处打开)。

当光标位于左分割中时,使用 :bnext 和 :bprevious 循环遍历左分割中的所有缓冲区;这是不可取的,因为我真的没有用在两个不同的分割中查看相同的文件内容(有没有办法选择加入 vim 克隆缓冲区影响?)。使用 :sbnext 和 :sbprevious 对于可见缓冲区非常有效,但是一旦遇到隐藏缓冲区,它就会在新的分割中打开,从而对我的布局造成严重破坏。当使用 10 个以上的缓冲区时,问题会变得更糟。

理想情况下,我想轮换给定分割内所有可见和隐藏的缓冲区(即打开缓冲区的位置))内所有可见和隐藏的缓冲区。

建议表示赞赏。

ps 现在正在尝试 vim ctrl-space 插件,相当不错,但没有解决上述问题。

谢谢

vim hidden buffer split rotation

0
推荐指数
1
解决办法
781
查看次数

setbuf() - printf() 和 write()

这是我在 Stackoverflow 上迈出的第一步!

所以,我试图使用setbuf()重定向stdoutchar buffer[BUFSIZ]. 当我使用时它工作得很好printf(),但当我使用系统调用时它根本不起作用write()

这是代码示例:

#include <stdio.h>
#include <unistd.h>

int     main(void)
{
    char    buffer[BUFSIZ];

    freopen("/dev/null", "a", stdout);
    setbuf(stdout, buffer);
    printf("This works\n");
    write(stdout->_file, "This doesn't.\n", 14);
    fflush(stdout);
    freopen("/dev/tty", "a", stdout);
    printf("Buffer content :\n%s", buffer);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

缓冲区内容:
这有效

你知道为什么吗?因为现在我不知道这是如何工作的,我将通过管道将标准输出传输到标准输入,然后读取结果 - 我认为这不是最干净的方法。

谢谢你,祝你有美好的一天 !

c buffer file-descriptor stream

0
推荐指数
1
解决办法
636
查看次数

可能无法识别的缓冲区溢出

我正在开发一个函数,该函数执行特定的 powershell 命令,然后返回输出(如果与 EOF 不同)。该函数第一次正确执行,但第二次输出很奇怪,表明我的代码的某些部分存在缓冲区溢出。我找不到它。否则,我无法为这种行为找出其他可能的解决方案。

\n

这是代码:

\n
char* buffer_reset(char* buffer);\nbool jobsreader (const char* printer_name, char* buffer);\n\nint main (int argc, char *argv[]) {\n    char buffer[1000];\n    char* pbuffer = buffer;\n    jobsreader("Microsoft Print to PDF", pbuffer);\n    pbuffer = buffer_reset(pbuffer);\n    jobsreader("Microsoft Print to PDF", pbuffer);\n    return 0;\n}\n\nchar* buffer_reset(char* buffer) {\n    char* memory_reset = &buffer[0];\n    char* start = memory_reset;\n    while (*memory_reset != '\\0') {\n        *memory_reset = '\\0';\n        memory_reset++;\n    }\n    buffer = start;\n    return buffer;\n}\n\nbool jobsreader (const char* printer_name, char* buffer) {\n    FILE *output;\n    const …
Run Code Online (Sandbox Code Playgroud)

c powershell buffer overflow

0
推荐指数
1
解决办法
60
查看次数

\n 不保留在缓冲区中吗?

为什么当我只使用整数时程序运行良好?当我为变量“a”插入一个数字然后按 Enter 键后,不会\n保留在缓冲区中吗?如果它确实存在,那为什么我b也可以初始化?如果我定义b为 char 那么b输出将是b 10;换句话说,换行符。例如,如果我想多次使用(使用什么?)为许多人输入一个名字,我会有什么问题吗?我需要一个清除缓冲区的函数吗?那么出了什么问题以及如何解决这个问题

#include <stdio.h>

int main() {
   int a,b;
   
  printf("a ");
  scanf("%d",&a);
  printf("a=%d",a);
  
  printf("\nb ");
  scanf("%d",&b);
  printf("b=%d",b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c printf buffer ascii

0
推荐指数
1
解决办法
50
查看次数

%0x%x在C/C++编程中意味着什么?

我有以下代码,但我不确定%0x%x以下代码中的含义是什么?

sprintf(buf, "pixel : %0x%x \n", gpbImageData[100]);
OutputDebugString(buf);
Run Code Online (Sandbox Code Playgroud)

gpbImageData[100] 指向内存中的图像数据.

c memory buffer

-1
推荐指数
2
解决办法
2万
查看次数

错误的缓冲区长度(const char FAR*)

我有一个问题,我绕道功能recv(ws2_32.dll)并尝试读取数据.我得到leng parametr - 17但在实际缓冲区中只有2个字节的长度.

我的代码:

int WINAPI OwnSend(SOCKET s, const char FAR *buff, int leng, int flags )
{
    //why 'leng'==17 and (sizeof(char) * strlen(buff) + 1) == 2?
    return pTrampolineSend(s, buff, leng, flags);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ sockets winapi buffer

-1
推荐指数
1
解决办法
321
查看次数

在Go中使用缓冲区进行读取和读取操作示例

我的操作系统背景不强,有人可以提供一些例子(如果可能请在Go中),为什么使用缓冲区很重要?

buffer go

-1
推荐指数
1
解决办法
245
查看次数

将缓冲区 (char*) 传递给 C 中的函数

我将缓冲区 (char*) 传递给 C 中的函数。

在函数内部,我为缓冲区分配内存并附加一个字符串(来自虚拟服务器的响应)。当在函数内部打印时,字符串将显示为从服务器发送的。

当尝试从函数外部读取缓冲区时,我没有得到我需要的结果:

A。// 字符* server_message; // 不起作用,错误:: 分段错误(核心已转储)

b. // char* server_message = calloc((BUFFER_SIZE) + 1, sizeof(char)); // 不起作用,没有生成错误,下面的 server_message 的 printf 打印一个空值:: ==> server_message:: || ||

C。char* server_message = calloc((1000 * BUFFER_SIZE) + 1, sizeof(char)); // 分配超出所需内存的工作:: ==> server_message:: || 2016-03-08 12:20:13 你好 ||

我根本不喜欢选项 c,因为我分配的内存超出了我的需要。出于测试目的,BUFFER_SIZE 当前设置为 10。

这是调用部分::

write_to_server(client_socket, message, server_message);
free(message);
printf("\n\n==> server_message:: || %s ||\n\n", server_message);

if (server_message != NULL)
    free(server_message);
Run Code Online (Sandbox Code Playgroud)

这是 write_to_server 函数代码:

void write_to_server(int file_descriptor, char* message, char* server_message) …
Run Code Online (Sandbox Code Playgroud)

c memory size buffer allocation

-1
推荐指数
1
解决办法
9854
查看次数

读取文本文件时无限循环

我想从文本文件中读取一些数据.这是文本文件中数据的格式:

A,20, ,0
B,30, ,0
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

public ArrayList rechercherSalle() 
{
    String nom;
    String ligne;
    ArrayList<Salle> listeSalles = new ArrayList<Salle>();
    Salle salle = new Salle();
    try {
        InputStream flux = new FileInputStream("salle.txt");
        InputStreamReader lecture = new InputStreamReader(flux);
        BufferedReader buff = new BufferedReader(lecture);
        ligne = buff.readLine();
        while (ligne != null) {
            String[] objetSalle = ligne.split(",");
            nom = objetSalle[0];
            String capacite_maxString = objetSalle[1];
            Integer capacite_max = Integer.parseInt(capacite_maxString);
            String capacite_actuelleString = objetSalle[3];
            Integer capacite_actuelle = Integer.parseInt(capacite_actuelleString);
            String proprietaire = objetSalle[2];
            salle = new Salle(); …
Run Code Online (Sandbox Code Playgroud)

java buffer inputstream outputstream

-1
推荐指数
1
解决办法
126
查看次数

std :: stringrink_to_fit损坏字符串

因此,我有std::string一个由C样式函数填充的对象,例如strcpy。该函数可以返回10-100个字符之间的任意位置,因此我在字符串中保留了100个字符。

但是使用&buf[0]作品,但是当我尝试时shrink_to_fit(),字符串被破坏了。如何避免这种情况?

std::string buf;
buf.reserve(100);
//example of the function that can write to a buffer with 10-100 characters.
strcpy(&buf[0], "Hello");
buf.shrink_to_fit();
std::cout << buf << std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ string buffer stl

-1
推荐指数
1
解决办法
65
查看次数

无缓冲通道是否等待数据?

我有这个程序:

package main

import (
    "fmt"
    "time"
)

var ch1 = make(chan int)
var ch2 = make(chan int)

func f1() {
    select {
    case <-ch1:
        fmt.Println("ch1")
    }
}
func f2() {
    select {
    case <-ch2:
        fmt.Println("ch2")
    }
}
func main() {
    go f1()
    go f2()
    time.Sleep(2 * time.Second)
    fmt.Println("no buffered channel will wait?")
    ch1 <- 1
    ch2 <- 2
    fmt.Println("main exits")
}
Run Code Online (Sandbox Code Playgroud)

我想到的是,只要F1和F2不显示任何信息,这意味着CH1和CH2具有里面什么都没有,所以ch1<-1ch2<-2应该阻止?

但是当运行时,它会打印:

no buffered channel will wait?
main exits
Run Code Online (Sandbox Code Playgroud)

为什么那些无缓冲通道ch1,并ch2没有阻止内主? …

buffer locking channel go

-1
推荐指数
1
解决办法
85
查看次数

UDP数据包未读取会发生什么?

在C中,我有一个简单的服务器/客户端UDP套接字编程示例.客户端以高速率向服务器发送数据包,而服务器读取每个传入的消息并将其发送回客户端.客户端永远不会读取任何传入的消息.

有没有理由相信发送回客户端的数据包会填满客户端的缓冲区?如果客户没有阅读任何内容,他们究竟会发生什么?它们会立即被丢弃吗?

c sockets buffer udp

-2
推荐指数
2
解决办法
398
查看次数

从 []byte 读取 uint8 而不创建 bytes.Buffer

如何阅读unit8[]byte而不创建bytes.Buffer。该值已像这样写入缓冲区,

buf := new(bytes.Buffer)
binary.Write(buf, binary.BigEndian, uint32(1))
binary.Write(buf, binary.BigEndian, uint8(1))
b := buf.Bytes()
Run Code Online (Sandbox Code Playgroud)

在解码时,它可以很容易地完成uint32,如下所示......

len := binary.BigEndian.Uint32(b[:4])
Run Code Online (Sandbox Code Playgroud)

但是对于uint8,检索我能想出的值的唯一方法是创建一个缓冲区,然后读取第一个字节,

buf := new(bytes.Buffer)
_, err := buf.Write(b[4:5])
// error handling ...
id = buf.ReadByte()
Run Code Online (Sandbox Code Playgroud)

encoding/binarypkg 中似乎没有用于uint8值检索的方法。我想这背后可能有一些很好的理由。

问题:有没有其他方法可以uint8[]byte不创建Buffer??

buffer go

-3
推荐指数
1
解决办法
324
查看次数