2

我试图弄清楚如何将用户输入用作 C 中的文件名。这是我编写的简单程序。

#include <stdio.h>
#define MAX 100

int main()
{
    FILE *fp;
    char name[MAX];


    printf("Enter filename: ");
    fgets(name, MAX, stdin);

    if((fp = fopen(name, "w")) == 0)
        printf("File cannot be opened!");

    return 0;
}

它总是打印“文件无法打开”。

4

3 回答 3

8

fgets在输入中保留换行符。

于 2013-06-03T11:14:36.707 回答
1

这是一个你必须在 fgets 之后添加的函数来解决这个问题

void newlineRemover(char *array)
{
    int i , lenght ;
    lenght = strlen(array);
    for(i = 0 ; i < lenght ; i++)
     {
        if(array[i] == '\n')
            array[i] = '\0' ;
     }
}
于 2013-06-03T11:20:38.167 回答
0

您必须添加“.txt”扩展名,然后它才能工作。
以下程序在与以下日期名称相同的目录中打开一个 txt 文件:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000000],s[20];
    strcpy(s,__DATE__);
    int i,j,k,l;
    strcat(s,".txt");
    printf("%s",s);
    FILE *f,*ff;
    f=fopen(s,"w");
}
于 2015-12-02T11:00:04.157 回答