小编Eri*_*öök的帖子

printf中的宽度说明符与重音字符无法正常工作

我正在尝试使用宽度说明符和printf函数格式化c中某些字符串的输出.但是我无法获得我想要的行为.似乎每次printf遇到字符å,ä或ö时,为字符串保留的宽度会缩小一个位置.

代码片段说明:

#include <stdio.h>

int main(void)
{
  printf(">%-10s<\n", "aoa");
  printf(">%-10s<\n", "aäoa");
  printf(">%-10s<\n", "aäoöa");
  printf(">%-10s<\n", "aäoöaå");

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的ubuntu linux bash-shell中输出.

>aoa       <
>aäoa     <
>aäoöa   <
>aäoöaå <
Run Code Online (Sandbox Code Playgroud)

我正在寻找有关如何处理这个问题的建议.我想要的是上面代码片段中的所有字符串都在空格填充的10字符宽字段中打印,如下所示:

>aoa       <
>aäoa      <
>aäoöa     <
>aäoöaå    <
Run Code Online (Sandbox Code Playgroud)

如果这不是其他设置的问题,我也很感激有关为什么会发生这种情况或反馈的任何见解.

c printf

7
推荐指数
2
解决办法
749
查看次数

取消使用异步函数创建的可观察对象

我是 rx 的新手,并且一直在使用 dot net 中的反应式扩展来处理一些网络代码。我的问题是,当我通过我提供的令牌触发取消时,我使用异步函数创建的 tcpClients 的 observable 没有像我预期的那样完成。这是我遇到问题的代码的简化版本:

public static class ListenerExtensions
{
    public static IObservable<TcpClient> ToListenerObservable(
        this IPEndPoint endpoint,
        int backlog)
    {
        return new TcpListener(endpoint).ToListenerObservable(backlog);
    }

    public static IObservable<TcpClient> ToListenerObservable(
        this TcpListener listener,
        int backlog)
    {
        return Observable.Create<TcpClient>(async (observer, token) => 
        {
            listener.Start(backlog);

            try
            {
                while (!token.IsCancellationRequested)
                    observer.OnNext(await Task.Run(() => listener.AcceptTcpClientAsync(), token));
                //This never prints and onCompleted is never called.
                Console.WriteLine("Completing..");
                observer.OnCompleted();
            }
            catch (System.Exception error)
            {
                observer.OnError(error);   
            }
            finally
            {
                //This is never executed and my …
Run Code Online (Sandbox Code Playgroud)

c# task system.reactive async-await .net-core

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

标签 统计

.net-core ×1

async-await ×1

c ×1

c# ×1

printf ×1

system.reactive ×1

task ×1