相关疑难解决方法(0)

如何在C中将整数转换为字符串?

我试过这个例子:

/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int i;
    char buffer [33];
    printf ("Enter a number: ");
    scanf ("%d",&i);
    itoa (i,buffer,10);
    printf ("decimal: %s\n",buffer);
    itoa (i,buffer,16);
    printf ("hexadecimal: %s\n",buffer);
    itoa (i,buffer,2);
    printf ("binary: %s\n",buffer);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但那里的例子不起作用(它表示该功能itoa不存在).

c string integer type-conversion

173
推荐指数
3
解决办法
96万
查看次数

Linux中的itoa功能在哪里?

itoa()是一个非常方便的函数,可以将数字转换为字符串.Linux似乎没有itoa(),是否有相同的功能或我必须使用sprintf(str, "%d", num)

c linux

131
推荐指数
7
解决办法
26万
查看次数

如何避免在信号处理程序中使用printf?

由于printf不是可重入的,因此在信号处理程序中使用它并不安全.但我已经看到很多使用printf这种方式的示例代码.

所以我的问题是:我们何时需要避免printf在信号处理程序中使用,是否有推荐的替代品?

c linux signals

80
推荐指数
4
解决办法
3万
查看次数

用C语言序列化数据结构

我想要一个可以将我的数据结构序列化到磁盘的C库,然后再加载它们.它应该接受任意嵌套的结构,可能使用循环引用.

我认为这个工具需要一个描述我的数据结构的配置文件.允许库使用代码生成,尽管我很确定没有它就可以这样做.

注意我对数据可移植性不感兴趣.我想将它用作缓存,所以我可以依赖不改变的环境.

谢谢.


结果

有人建议Tpl是一个很棒的库,但我相信它不会做任意的对象图,例如每个包含两个其他节点的节点树.

另一个候选人是Eet,这是Enlightenment窗口管理器的一个项目.看起来很有趣但是,似乎没有能力序列化嵌套结构.

c serialization

41
推荐指数
3
解决办法
4万
查看次数

在C中将int转换为字符串

我正在使用该itoa()函数转换intstring,但它给出了一个错误:

undefined reference to `itoa'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

是什么原因?还有其他方法可以执行此转换吗?

c

35
推荐指数
3
解决办法
20万
查看次数

以与语言无关的二进制格式序列化数据的最佳方法是什么?

我正在研究一种机制,用于在与语言无关的机制中通过套接字或共享内存传递序列化数据.我不愿意使用XML,因为这些数据将非常结构化,编码/解码速度至关重要.拥有一个获得大量许可的优秀C API非常重要,但理想情况下应该支持大量其他语言.我看过谷歌的协议缓冲区ASN.1.我是在正确的轨道上吗?还有更好的东西吗?我应该只实现自己的打包结构,而不是寻找一些标准?

c language-agnostic serialization asn.1

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

使用write或async-safe函数从信号处理程序中打印int

我想write在信号处理程序内使用(或任何异步安全函数)将数字打印到日志或终端中.我宁愿不使用缓冲I/O.

是否有一种简单而推荐的方法可以做到这一点?

例如代替printf,我更喜欢write(或任何asyn安全功能).

void signal_handler(int sig)
{
  pid_t pid;
  int stat;
  int old_errno = errno;

  while((pid = waitpid(-1, &stat, WNOHANG)) > 0)
    printf("child %d terminated\n", pid);

  errno = old_errno;
  return;
}
Run Code Online (Sandbox Code Playgroud)

打印字符串很容易.代替printf上面我可以使用(不打印pid):

write(STDOUT_FILENO, "child terminated", 16);
Run Code Online (Sandbox Code Playgroud)

c signals async-safe

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

用于嵌入式系统的简约人类可读序列化格式解析器

通过"人类可读的序列化格式"我的意思是YAML,JSON,INI或喜欢.请注意,XML对于我的目的来说,太冗长和太不方便了,所以让我们把它作为最后的手段.

格式应将数据存储为"命名键 - 值"对,并允许嵌套和数组.但是,缺少数组并不重要.此外,非常感谢类型感知(不仅将数据作为普通字符串返回的能力).

我真正需要的是一个纯C库,它提供了一个用于解析数据的API(编码是可选的,不太重要).在为ARM7编译时,它必须适合大约16-20 KiB.

我已经用Google搜索并在周围徘徊,但找不到满足上述所有要求的工件.

c embedded serialization yaml human-readable

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

是snprintf(NULL,0,...); 行为标准化?

在Linux上,它返回将要打印的字符数.

这是标准化的行为吗?

c standards stdio

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

将整数存储在char数组中

我试图在char数组中存储一个整数.我怎样才能做到这一点?这是我的方法(通过将其转换int为a char),但它不起作用.我错过了什么?

#include <stdio.h>

int main(int argc, char** argv) 
{
    char cArray[10] = {};

    // Store a character in the char array
    cArray[5] = 'c';
    printf("%c\n", cArray[5]);

    // Store an integer in the char array
    cArray[6] = (char) 0; // WHY DOES THIS NOT WORK???
    printf("%c\n", cArray[6]);
}
Run Code Online (Sandbox Code Playgroud)

c arrays

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