每次在c中运行程序时都创建一个新文件

时间:2018-04-12 10:25:42

标签: c file

我正在创建一个程序,将调查问卷的结果写入.txt文件,并想知道每次运行程序时是否有任何方法可以使用新名称创建新文件?

 FILE *fp;
 fp = fopen("results.txt","w");

每次如何以不同的名称保存文件reults.txt?

所以我已完成以下操作,让用户保存其结果的名称。

int main(int argc, char *argv[])
{

printf("Please enter a filename to save your results to\n");

    char c;
    FILE *fp;

    if (argc >= 2){
         fp = fopen(argv[1], "w");}

    while ((c = getchar()) != EOF)
    {
        putc(c, fp);
    }

但是我遇到了核心错误。

3 个答案:

答案 0 :(得分:1)

使用标准C函数来实现此目的。

  

7.21.4.4 tmpnam函数

#include <stdio.h>
char *tmpnam(char *s);
     

tmpnam函数生成一个有效文件名的字符串,它不相同   作为现有文件的名称。

值得注意的是,这一系列功能存在CERT-C here解决的一些安全问题。 C11提供了更安全的版本tmpfile_stmpnam_s,作为可选的边界检查界面的一部分。但是,如果您的初学者问卷调查计划不需要针对黑客的商业生产质量保护,那么这不应该成为一个问题。

答案 1 :(得分:-1)

有很多方法可以做到这一点。

  • 您可以将文件名作为参数。
  • 您可以获取进程ID(使用getpid()),并将其添加到名称的末尾。
  • 您可以在文件末尾添加一个数字,并在每次运行程序时递增它(通过查看目录)
  • ...

编辑:
回答第一次编辑

您只能在argv < 2打开文件,那么argv >= 2会附加什么?当你putc(c, fp);时,你认为会有什么附加? 如果你希望你的程序只在有足够的参数的情况下运行,请在小节点进行检查,如果不正确则退出,并显示一条消息,告诉它为什么不正常。 :)

并且,请务必检查fopenmalloc等函数的返回情况......确保一切正常。

答案 2 :(得分:-1)

您可以使用C中的rand()函数生成随机数,并将其附加到文件末尾!或者您可以将currentmillis附加到您的文件名,以便每次都获得唯一的名称!当然有很多方法可以做到这一点! 或者char *tmpnam(char *str);也可以使用!