c - 逐行读取文件,将随机行写入 C 中的另一个文件

标签 c

所以我有一个包含多行的文件,我想将其中一些行复制到一个新文件中,具体来说是随机行。 只要我从文件中复制所有行文件,一切都会顺利,但是当我尝试引入随机化时,在新文件中,行会丢失几个字符

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>



int main()
{
    srandom(time(NULL));
    int n,i=0,j=0,k,l;
    char c[200][200];

    char *buff=(char *)malloc(sizeof(char));

    int f= open("erzekelokbeugro.txt",O_RDONLY);
    int f2= open("teszt.txt",O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);

    do
    {
        do
        {
            n=read(f,buff,1);
            c[j][i]=*buff;
            //printf("%c",buff[0]);
            i++;
        }
        while(buff[0] !='\n');
        j++;
    }
    while(n>0);

        k=10;
        //j=73;
        i=0;

    while(k>0)
    {   
        j=rand()%49;
            //printf("%d ", j);
        do
        {

            *buff=c[j][i];
            if(buff[0]!=0)
            {
            write(f2,buff,1);

            //printf("%c",buff[0]);
            }

            i++;
        }
        while(buff[0] !='\n');
        //printf("----\n");
        k--;
    }





    close(f);
    close(f2);
    return 0;
}

输入是这样的(我不会复制整个文件,只是一个示例,它是匈牙利语的,但内容无论如何并不重要):

8.Érzékelés alsó határa (detektálási küszöb)
9.Felbontás
10.Nullponteltolódás (drifft)
11.Érzékenység eltolódás
12.Ismétlési (reprodukciós) hiba
13.Csereszabatosság mértéke
14.Szelektivitás
15.Beállási idő
16.Élettartam
17.Hőmérséklet definíciója
18.Mit tud a Celsius skáláról:
19.Ismertesse a hőmérsékleti együttható (?) képletét az ellenállás-hőmérő esetén.Nevezze meg a képlet elemeit.

输出如下:

és voltmérő sematikus ábrája
5.Linearitás
as műszerek működési elve:
15.Beállási idő
26.Ismertesse a nyomás definícióját, és kiszámítási képletét.
28.Villamos elvű passzív nyomásmérő főbb típusai
34.Ellenállás nyomásérzékelő mérési tartománya és pontossága
29.A villamos elvű nyomásmérők előnyei
35.Piezoelektromos nyomásérzékelés mérési elve
ust használó szenzorok előnyei:

正如你所看到的,所有的行都应该以数字开头,但有时会丢失,也可能会缺少一些字符(甚至半行),但接下来一切正常

最佳答案

每次选择新的 j 时都需要初始化

i。您可能还想研究如何一次打印整个字符串,而不是一次打印一个字符。

关于c - 逐行读取文件,将随机行写入 C 中的另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369397/

相关文章:

php - 自定义 PHP 扩展

c - 使用递归在 C 中反转字符串

c - 给定二维矩阵,找到最长的递减数字序列

python - 可以用PyCharm Professional替代CLion-主要用于python

c - 阻止 Linux read(2),直到所有 count 个字节都到达

c - 用 C 读取文件并将内容传递给 main()

c - 智能 Makefile : way scan directory tree and compile . c 文件

c - Ubuntu 上对 exp 的 undefined reference (包括 math.h 和与 -lm 的链接)

将存储为 1912.02.14 的日期转换为 printf 作为 1912 年 2 月 2 日

c++ - COM 的 CoUnintailize() api 崩溃