【问题标题】:write system call in C, how to print integer value to file用C编写系统调用,如何将整数值打印到文件
【发布时间】:2014-04-17 00:09:30
【问题描述】:

我正在尝试将变量写入文件,但我不断收到语法错误,或者它没有将其打印到文件中。

我有 info.uptime,我想将它打印到“file.txt”,所以我尝试了:

int fd = open("file.txt", O_WRONLY);
write(fd, info.uptime, length(info.uptime));

长度函数是我创建的用于查看数字长度的函数。 在文件中数字消失了,所以我尝试了:

int fd = open("file.txt", O_WRONLY);
write(fd,("%lu" ,info.uptime), length(info.uptime));

现在它给了我太多参数的语法错误。 我该怎么做?

在 ubuntu 上

编辑:我只能使用:

#include <unistd.h>
#include <sys/sysinfo.h>
#include <sys/syscall.h>
#include "helper.h"

EDIT2:

int length(int n)
{
        int i;
    for (i=0;n>=1;i++)
    {
        n = n/10;
    }
    return i;
}

【问题讨论】:

  • 你第一次去可能工作但将数据写成二进制。我们不知道“长度”是如何工作的,所以不可能说它是否真的有效
  • 注意:对于length(0),建议for (i=0;n&gt;=0;i++)

标签: c file integer system-calls


【解决方案1】:

您的语法错误。类型:

man -s 3 write

从命令行。


编辑:答案不再有意义,因为问题已更新为使用正确的语法。

【讨论】:

  • 也 apt-get install build-essential
【解决方案2】:

您的 edit2 表明您几乎可以正常工作。稍微搅拌一下

char digit = n%10

在循环中,您将完成。您是否希望我们实际上只是为您编写代码。真的是cs101级别的东西

【讨论】:

    【解决方案3】:

    您希望系统按您希望的方式工作。即只是希望功能存在,因为它们很有用。没有接受文件名的写入函数。没有接受 printf 格式字符串作为其第二个参数的写入函数。

    你需要

    fopen(<name>)
    fprintf(...)
    fclose
    

    在您编辑添加 open 之后,您仍然希望存在不存在的功能(写入需要 printf)。如果你想写成字符串,如果你不能使用 itoa 或 xprintf,你将不得不自己转换它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      相关资源
      最近更新 更多