gpt4 book ai didi

CHAT-GPT初使用

转载 作者:我是一只小鸟 更新时间:2023-06-16 14:31:09 25 4
gpt4 key购买 nike

拿chatgpt去试验了一下,一个挺小的需求,但是前后还是更改了三次,体验就是它可以不断改进之前实现的代码,但需要提需求的人比较清楚需求内的细节,差不多类似于,我有想法,它来实现,还是可以提高不少效率的。具体体验如下:

我:请写一段C语言代码,将2M大小的文件填充0xff到30M,要求不能申请超过1K大小的内存?

 CHAT-GPT:这是一个C语言的代码示例,它使用了一个1K的缓冲区来填充文件。请注意,这个代码没有包含错误处理,你可能需要根据你的实际需求来添加。
                        #include <stdio.h>


                        
                          #define
                        
                         BUFFER_SIZE 1024


                        
                          void
                        
                         fill_file(
                        
                          const
                        
                        
                          char
                        
                        *
                        
                           filename) {
    FILE
                        
                        * file = fopen(filename, 
                        
                          "
                        
                        
                          ab
                        
                        
                          "
                        
                        
                          );
    
                        
                        
                          if
                        
                         (file ==
                        
                           NULL) {
        printf(
                        
                        
                          "
                        
                        
                          无法打开文件\n
                        
                        
                          "
                        
                        
                          );
        
                        
                        
                          return
                        
                        
                          ;
    }

    
                        
                        
                          char
                        
                        
                           buffer[BUFFER_SIZE];
    
                        
                        
                          for
                        
                         (
                        
                          int
                        
                         i = 
                        
                          0
                        
                        ; i < BUFFER_SIZE; i++
                        
                          ) {
        buffer[i] 
                        
                        = 
                        
                          0xff
                        
                        
                          ;
    }

    
                        
                        
                          for
                        
                         (
                        
                          int
                        
                         i = 
                        
                          0
                        
                        ; i < (
                        
                          30
                        
                         * 
                        
                          1024
                        
                         * 
                        
                          1024
                        
                        ) / BUFFER_SIZE; i++
                        
                          ) {
        fwrite(buffer, 
                        
                        
                          1
                        
                        
                          , BUFFER_SIZE, file);
    }

    fclose(file);
}


                        
                        
                          int
                        
                        
                           main() {
    fill_file(
                        
                        
                          "
                        
                        
                          test.txt
                        
                        
                          "
                        
                        
                          );
    
                        
                        
                          return
                        
                        
                          0
                        
                        
                          ;
}
                        
                      

CHAT-GPT:这段代码首先打开一个文件,然后创建一个1K大小的缓冲区并填充0xff。然后,它将这个缓冲区写入文件,直到文件的大小达到30M。最后,它关闭文件.

  。

我:填充的文件大小存在问题,忽略了原始文件的大小,请修改 。

CHAT-GPT:对不起,我犯了一个错误。你是对的,我应该在原始文件大小的基础上添加数据,直到文件大小达到30M。以下是修改后的代码:

 
                          #include <stdio.h>


                          
                            #define
                          
                           BUFFER_SIZE 1024


                          
                            void
                          
                           fill_file(
                          
                            const
                          
                          
                            char
                          
                          *
                          
                             filename) {
    FILE
                          
                          * file = fopen(filename, 
                          
                            "
                          
                          
                            ab
                          
                          
                            "
                          
                          
                            );
    
                          
                          
                            if
                          
                           (file ==
                          
                             NULL) {
        printf(
                          
                          
                            "
                          
                          
                            无法打开文件\n
                          
                          
                            "
                          
                          
                            );
        
                          
                          
                            return
                          
                          
                            ;
    }

    
                          
                          
                            char
                          
                          
                             buffer[BUFFER_SIZE];
    
                          
                          
                            for
                          
                           (
                          
                            int
                          
                           i = 
                          
                            0
                          
                          ; i < BUFFER_SIZE; i++
                          
                            ) {
        buffer[i] 
                          
                          = 
                          
                            0xff
                          
                          
                            ;
    }

    fseek(file, 
                          
                          
                            0
                          
                          
                            , SEEK_END);
    
                          
                          
                            long
                          
                           current_size =
                          
                             ftell(file);

    
                          
                          
                            for
                          
                           (
                          
                            int
                          
                           i = 
                          
                            0
                          
                          ; i < ((
                          
                            30
                          
                           * 
                          
                            1024
                          
                           * 
                          
                            1024
                          
                          ) - current_size) / BUFFER_SIZE; i++
                          
                            ) {
        fwrite(buffer, 
                          
                          
                            1
                          
                          
                            , BUFFER_SIZE, file);
    }

    fclose(file);
}


                          
                          
                            int
                          
                          
                             main() {
    fill_file(
                          
                          
                            "
                          
                          
                            test.txt
                          
                          
                            "
                          
                          
                            );
    
                          
                          
                            return
                          
                          
                            0
                          
                          
                            ;
}
                          
                        

CHAT-GPT: 这段代码首先打开一个文件,然后创建一个1K大小的缓冲区并填充0xff。然后,它将文件指针移动到文件的末尾,并获取当前的文件大小。然后,它将缓冲区写入文件,直到文件的大小达到30M。最后,它关闭文件.

 
我:当前填充的方式仍可能会超出目标30M大小,请对数据非1K对齐的情况进行处理,得到刚好30M大小的文件
 
CHAT-GPT:你是对的,如果文件大小不是1K的倍数,那么最后一次写入可能会使文件大小超过30M。我们可以在最后一次写入时只写入需要的字节数,以确保文件大小正好是30M。以下是修改后的代码:
                            #include <stdio.h>


                            
                              #define
                            
                             BUFFER_SIZE 1024


                            
                              void
                            
                             fill_file(
                            
                              const
                            
                            
                              char
                            
                            *
                            
                               filename) {
    FILE
                            
                            * file = fopen(filename, 
                            
                              "
                            
                            
                              ab
                            
                            
                              "
                            
                            
                              );
    
                            
                            
                              if
                            
                             (file ==
                            
                               NULL) {
        printf(
                            
                            
                              "
                            
                            
                              无法打开文件\n
                            
                            
                              "
                            
                            
                              );
        
                            
                            
                              return
                            
                            
                              ;
    }

    
                            
                            
                              char
                            
                            
                               buffer[BUFFER_SIZE];
    
                            
                            
                              for
                            
                             (
                            
                              int
                            
                             i = 
                            
                              0
                            
                            ; i < BUFFER_SIZE; i++
                            
                              ) {
        buffer[i] 
                            
                            = 
                            
                              0xff
                            
                            
                              ;
    }

    fseek(file, 
                            
                            
                              0
                            
                            
                              , SEEK_END);
    
                            
                            
                              long
                            
                             current_size =
                            
                               ftell(file);
    
                            
                            
                              long
                            
                             target_size = 
                            
                              30
                            
                             * 
                            
                              1024
                            
                             * 
                            
                              1024
                            
                            
                              ;
    
                            
                            
                              long
                            
                             remaining = target_size -
                            
                               current_size;

    
                            
                            
                              while
                            
                             (remaining > 
                            
                              0
                            
                            
                              ) {
        
                            
                            
                              int
                            
                             write_size = remaining > BUFFER_SIZE ?
                            
                               BUFFER_SIZE : remaining;
        fwrite(buffer, 
                            
                            
                              1
                            
                            
                              , write_size, file);
        remaining 
                            
                            -=
                            
                               write_size;
    }

    fclose(file);
}


                            
                            
                              int
                            
                            
                               main() {
    fill_file(
                            
                            
                              "
                            
                            
                              test.txt
                            
                            
                              "
                            
                            
                              );
    
                            
                            
                              return
                            
                            
                              0
                            
                            
                              ;
}
                            
                          

CHAT-GPT:这段代码首先打开一个文件,然后创建一个1K大小的缓冲区并填充0xff。然后,它将文件指针移动到文件的末尾,并获取当前的文件大小。然后,它将缓冲区写入文件,直到文件的大小达到30M。在最后一次写入时,它只写入需要的字节数,以确保文件大小正好是30M。最后,它关闭文件.

 

最后此篇关于CHAT-GPT初使用的文章就讲到这里了,如果你想了解更多关于CHAT-GPT初使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com