我编写了一个程序,它接受一个文件作为输入,每当它找到一个长度> 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) 我需要确定任何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)
但是,这依赖于图像中是否包含python2或python3.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) 我尝试在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.
你能帮我解决为什么输出是这样的吗?
我正在阅读 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.
看起来我无法将它与一些非常基本的概念联系起来。
我想传递一个包含从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?
假设我有一个包含'.'和的文本',',有时它们都跟着空格.我需要编写一个正则表达式,从整个文本中删除[ '.'和空格]或[ ','和空格].我有如下所述的正则表达式: -
text = re.sub('[.]+[ ]+', " ", text)
text = re.sub('[,]+[ ]+', " ", text)
Run Code Online (Sandbox Code Playgroud)
在这里,我将多个模式应用于字符串多次.有没有一种有效的方法可以一次性完成这项工作?此外,输出存储在同一个变量中.这是一种有效的方式,还是我们在这种情况下创建了一个副本.请告诉我.
谢谢.