小编Rah*_*hul的帖子

C函数用于在文件中的特定位置插入文本而不会覆盖现有文本

我编写了一个程序,它接受一个文件作为输入,每当它找到一个长度> 80的行时,它会将\和\n添加到该文件中,使其最大宽度为80个字符.

问题是我已经使用fseek插入\和\n,只要长度超过80,所以它会覆盖超过长度80的那一行的两个字符.有没有一种方法可以插入文本而不覆盖现有文本?

这是我的代码: -

#include<stdio.h>
#include<string.h>

int main(int argc, char *argv[])
{
  FILE *fp1,*fp2;
  int prev=0,now=0;
  char ch;
  int flag=0;
  long cur;
  fp1=fopen(argv[1],"r+");
  if(fp1==NULL){
    printf("Unable to open the file to read. Program will exit.");
    exit(0);
  }
  else{
    while((ch=fgetc(fp1))!=EOF){
      if(ch!=' ' && ch!='\n'){
        now=now+1;
      }
      else{
        if(now>=80){
            fseek(fp1,cur,SEEK_SET);
            fputc('\\',fp1);
            fputc('\n',fp1);
            now=0;
            continue;
        }
        if(ch=='\n'){
          flag=0;
          now=0;
          continue;
          }
        else{
          prev=now;
          cur=ftell(fp1);
        }
        now=now+1;
      }
    }
  }
  fclose(fp1);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

要运行它,您需要执行以下操作: -

user@ubuntu$ cc xyz.c
user@ubuntu$ ./a.out file_to_check.txt
Run Code Online (Sandbox Code Playgroud)

c file-io

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

确定泊坞窗图像的OS分布

我需要确定任何docker镜像的OS分配名称.我可以将ubuntu:latest标记为image1:latest,但是我应该能够在启动时获取image1:latest的发布信息.

为实现此目的,我使用下面提到的命令来确定操作系统版本:

$ docker tag ubuntu image1
$
$ docker run -it image1 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$
Run Code Online (Sandbox Code Playgroud)

但是,这依赖于图像中是否包含python2python3.ubuntu:12.04失败了,我需要在那里使用python2.

$ docker run -it ubuntu /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$
$ docker run -it ubuntu:12.04 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
/bin/sh: …
Run Code Online (Sandbox Code Playgroud)

python docker dockerfile

15
推荐指数
3
解决办法
9863
查看次数

C中"3"和"3"之间的差异

我尝试在C中运行以下程序并获得一些输出.你能帮帮我吗?

#include<stdio.h>

int main()
{
  char x='A';
  printf("%d%d%d",sizeof("3"),sizeof('3'),sizeof(3));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在ubuntu 11.04 32位中使用gcc收到的输出为2 4 4.

同样在其他计划中: -

#include<stdio.h>

int main()
{
  char x='A';
  printf("%d%d",sizeof('A'),sizeof(x));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在ubuntu 11.04 32位中使用GCC接收的输出为4 1.

你能帮我解决为什么输出是这样的吗?

c

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

无法理解为什么不应该使用 /usr/src/linux 进行内核开发

我正在阅读 Robert Love 所著的《Linux 内核开发》。我遇到了一条我无法完全理解的线:-

The kernel source is installed in /usr/src/linux. You should not use this source tree for development because the kernel version against which your C library is compiled is often linked to this tree.

看起来我无法将它与一些非常基本的概念联系起来。

linux kernel build linux-kernel

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

如何将表(数字列表)从Lua传递给C并访问它

我想传递一个包含从Lua到C的数字的列表并在C中访问它.我该怎么做?

假设我有以下表格:

x = {1, 2, 3, 9, 5, 6}
Run Code Online (Sandbox Code Playgroud)

我想将它发送到C并将此表存储在C中的数组中.

我发送它使用:

quicksort(x)
Run Code Online (Sandbox Code Playgroud)

quicksort我在C中定义的函数在哪里

如何访问xC?

c c++ lua

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

在python中同时将多个正则表达式应用于文本

假设我有一个包含'.'和的文本',',有时它们都跟着空格.我需要编写一个正则表达式,从整个文本中删除[ '.'和空格]或[ ','和空格].我有如下所述的正则表达式: -

text = re.sub('[.]+[ ]+', " ", text)
text = re.sub('[,]+[ ]+', " ", text)
Run Code Online (Sandbox Code Playgroud)

在这里,我将多个模式应用于字符串多次.有没有一种有效的方法可以一次性完成这项工作?此外,输出存储在同一个变量中.这是一种有效的方式,还是我们在这种情况下创建了一个副本.请告诉我.

谢谢.

python regex

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

标签 统计

c ×3

python ×2

build ×1

c++ ×1

docker ×1

dockerfile ×1

file-io ×1

kernel ×1

linux ×1

linux-kernel ×1

lua ×1

regex ×1