指定文件扩展名

时间:2017-02-23 01:25:00

标签: c file-io

现在,我所拥有的是:

#include <stdio.h>
#include <conio.h>
#include <string.h>

int main() 
{
    char fname[100];
    FILE* fp;
    memset(fname, 0, 100);

    /* ask user for the name of the file */
    printf("enter file name: ");
    gets(fname);

    fp = fopen(fname, "w");

    /* Checks if the file us unable to be opened, then it shows the 
       error message */
    if (fp == NULL)
        printf("\nError, Unable to open the file for reading\n");
    else
        printf("hello");
    getch();
}

这个功能很好,但有没有办法可以强制它保存为.txt或.data或其他东西?现在它只是保存为你输入的名称没有扩展名。除了要求用户输入名称和扩展名之外,我无法想出一种方法。我的意思是,它仍然适用于阅读/写作目的,我只是认为扩展会很好。

3 个答案:

答案 0 :(得分:1)

扩展我的评论:

strcat(fname, ".txt");

答案 1 :(得分:0)

假设目标足够大以存储新文本,strcat函数可用于将文本附加到目标缓冲区。

char *strcat(char *destination, const char *source);

source是您要附加的新文本(在您的情况下是扩展名),destination是新文本的添加位置。如果destination不够大,则行为未定义。

还可以使用snprintf函数附加文本,这样更安全,因为它需要一个大小参数。

答案 2 :(得分:0)

我明白了。感谢我的一位朋友,他今天早些时候向我展示了这件事。

int main()
{
    FILE *Fileptr;
    char filename[50];
    char file[50];
    int c;

    printf("What do you want to name your file?");
    scanf("%s", filename);

    sprintf(file, "%s.txt", filename);

    Fileptr = fopen(file, "w");
    fprintf(Fileptr, "Data goes here");
    fclose(Fileptr);

    return 0;
}

比我以前做得容易得多。