c语言输入一个文件名打开该文件

新手求解,不要用system函数,我想是这样
……
gets(str);
fp=fopen(这里我不会写,"r");
……

这里我有几个疑问,第一是我输入文件名的时候需不需要输入扩展名,第二在我注明不会写的那里需要加“”号吗,写成“s”还是直接写s,第三如果我打开别的目录下的这个名字的文件应该怎么写,比如我想打开d:\\a\\ s.txt 注明的那里应该怎么写?

fp=fopen(“文件名或文件名路径”,"r");这样就ok了,问题1,需要输入扩展名,2需要加双引号,3,你想打开那个文件,就把那个文件的路径写下就可以,如果源程序和需要打开的文件在一个文件夹里,就不需要写路径名,直接写文件名就可以了,希望可以帮到你
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-18

用一个字符串记录你输入的路径和文件名,用以下代码就可以胜任。

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void){
    FILE *fp;
    char filename[30],x[31];
    printf("Please input you want to open the file name:\n");
    gets(filename);
    if((fp=fopen(filename,"r+"))==NULL){
        printf("Open the file failure...\n");
        exit(0);
    }
    fgets(x,30,fp);
    printf("%s",x);
    fclose(fp);
    return 0;
}

第2个回答  2014-03-30
写了个程序,可以测试你输入后,程序获得的是什么。
#include <stdio.h>
char s[1024];
int main() { puts(gets(s));}

一,输文件名的时候如果不输入扩展名,则fopen将打开不具扩展名的那个同名文件,如果那文件存在的话。
二,“”标识常量。你程序中定义的str是常量?
三,根据本人所写程序测试,所输即所得。所以你说的那里用不着刻意去想该怎么写,写str即可。本回答被提问者采纳
第3个回答  2014-03-29
fp=fopen(str,"r");

fp=fopen("d:\\a\\s.txt","r");
相似回答