RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1085809
Accepted
Руслан Мамедов
Руслан Мамедов
Asked:2020-02-22 01:00:35 +0000 UTC2020-02-22 01:00:35 +0000 UTC 2020-02-22 01:00:35 +0000 UTC

写入文件的问题

  • 772

我需要将一个文件的内容(它有 37 条记录)分散在 sqrt(37) 文件上(四舍五入)。实际上,问题是什么:我的代码没有在 7 文件中创建最后一个条目(它甚至没有创建它)。请告诉我要修复什么。提前致谢。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

int main(void) {
    FILE* fp;
    FILE* fp2;
    int n, count; // n - количество записей в файле, count- количество файлов
    char buffer[3];
    char name[80] = "TMP";
    double tmp1, tmp2, tmp3;


    if ((fp = fopen("Data.txt", "r")) == NULL) {
        printf("File not opened\n");
        _getch();
        exit(EXIT_FAILURE);
    }
    else
        printf("File opened\n");

    fscanf(fp, "%d", &n);
    count = sqrt(n);
    printf("%d", count);

    for (int i = 0; i < count; i++) {
        name[3] = 0;
        _itoa(i + 1, buffer, 10);
        strcat(name, buffer);
        strcat(name, ".txt");
        if ((fp2 = fopen(name, "w")) == NULL) {
            printf("File fp2 not opened\n");
            _getch();
            exit(EXIT_FAILURE);
        }
        for (int j = 0; j < n / count; j++) {
            fscanf(fp, "%lf %lf %lf", &tmp1, &tmp2, &tmp3);
            fprintf(fp2, "%lf %lf %lf\n", tmp1, tmp2, tmp3);
        }
        fclose(fp2);
    }

    _getch();

    return 0;
}
c
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Harry
    2020-02-22T01:05:16Z2020-02-22T01:05:16Z

    你在说话n == 37吗?

    然后

    count = sqrt(n); 
    

    给出 6;

    for (int i = 0; i < count; i++) {
    

    执行 6 次 - 0、1、...、5。

    你说的是哪个第七档?

    • 2
  2. Руслан Мамедов
    2020-02-22T19:18:24Z2020-02-22T19:18:24Z

    请原谅我不清楚的问题。下次我会更小心的。

    这只是我需要解决的整个问题的一部分。在其中,您需要将 n 条记录分散到 sqrt (n) 个文件中,然后在每个文件中对它们进行排序,然后将所有内容合并在一起。我问你问题的第一部分。但是,幸运的是,过了一会儿,我想到了。也许有人会需要它。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    
    int main(void) {
        FILE* fp;             // указатель на файл с которого будет считывать
        FILE* fp2;           // указатель на второй файл, в который будем записывать
        int n, k = 0;       // n - первая строка в fp, в ней содержится количество записей в файле
                            // k -  переменная- ограничитель для последнего файла
        char buffer[3];      // переменная для хранения цифры, которую мы превратим в строку
        char name[80] = "TMP"; // скелет для создаваемых файлов
        double tmp;              
        int files, lines, columns;  // количество файлов, строк и столбцов
    
        if ((fp = fopen("Data.txt", "r")) == NULL) {
            printf("File not opened\n");
            _getch();
            exit(EXIT_FAILURE);
        }
        else
            printf("File opened\n");
    
        fscanf(fp, "%d", &n);
        files = ceil(sqrt(n));
        lines = ceil(n / (ceil(sqrt(n))));
        columns = 3;      // в файле записи идут по 3 столбца
    
        for (int i = 0; i < files; i++) {     // отвечает за создание файлов
            name[3] = 0;
            _itoa(i + 1, buffer, 10);
            strcat(name, buffer);
            strcat(name, ".txt");
            if ((fp2 = fopen(name, "w")) == NULL) {
                printf("File fp2 not opened\n");
                _getch();
                exit(EXIT_FAILURE);
            }
            for (int j = 0; j < lines; j++) {   // отвечает за строки в файле 
                while (k < columns) {           // отвечает за столбцы в файле
                    if (fscanf(fp, "%lf", &tmp) == EOF)
                        break;
                    fprintf(fp2, "%.1lf ", tmp);
                    k++;
                }
                fprintf(fp2, "\n");
                k = 0;
    
            }
            fclose(fp2);
        }
        fclose(fp);
        printf(" P r e s s  a n y  k e y . . .");
        _getch();
    
        return 0;
    }
    
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5