请教:在程序中通过键盘输入一个文件地址来调取?

shiguojie19892 2013-01-05 08:36:25
如下:
#include <stdio.h>

void main(void)
{
printf("enter a mane:\n");
char a;
scanf("%c",&a);


FILE *Fprintf;
Fprintf = fopen("c:\test\1.txt", "w");

return;
}

我怎么修改可以通过scanf来输入1.txt 的地址?
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
whizer 2013-01-05
  • 打赏
  • 举报
回复
通过scanf输入文件的地址,你的目的是干什么?找到文件还是找到文件地址? 如果是为了找到文件,直接scanf文件名就可以了. 如果是为了找到文件地址,一般来说文件位于磁盘上,磁盘只有柱面/磁道/扇区的概念,即使加载到内存中,也是位于缓冲区中的临时地址.如果非要开辟一块内存存储你的文件,你可以自己malloc一块,然后对内存进行操作,最后把这块内存拷贝到文件.
赵4老师 2013-01-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
void main(void)
{
    char a[256];
    FILE *f;

    printf("Enter path for 1.txt:\n");
    fgets(a,256,stdin);
    if ('\n'==a[strlen(a)-1]) a[strlen(a)-1]=0;
    if ('\\'!=a[strlen(a)-1]) strcat(a,"\\");
    strcat(a,"1.txt");
    f = fopen(a, "w");
    //...
    fclose(f);
    return;
}
ForestDB 2013-01-05
  • 打赏
  • 举报
回复
去看文件夹的遍历。
赵4老师 2013-01-05
  • 打赏
  • 举报
回复
引用 5 楼 shiguojie19892 的回复:
引用 2 楼 whizer 的回复:通过scanf输入文件的地址,你的目的是干什么?找到文件还是找到文件地址? 如果是为了找到文件,直接scanf文件名就可以了. 如果是为了找到文件地址,一般来说文件位于磁盘上,磁盘只有柱面/磁道/扇区的概念,即使加载到内存中,也是位于缓冲区中的临时地址.如果非要开辟一块内存存储你的文件,你可以自己malloc一块,然后对内存进行操作…… 我想通过输入一个文件夹的地址来显示出这个文件夹里所有文件的列表,包括文件夹里面的多层文件。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(void)
{
    char a[256];
    char cmd[512];
    FILE *f;

    printf("Enter a path for list all files:\n");
    fgets(a,256,stdin);
    if ('\n'==a[strlen(a)-1]) a[strlen(a)-1]=0;
    if ('\\'!=a[strlen(a)-1]) strcat(a,"\\");
    sprintf(cmd,"dir \"%s*.*\" /b /s /a-d >d:\\allfiles.txt",a);
    system(cmd);
    f = fopen("d:\\allfiles.txt", "r");
    if (NULL==f) return;
    while (1) {
        if (NULL==fgets(cmd,512,f)) break;
        printf("%s",cmd);
    }
    fclose(f);
    return;
}
shiguojie19892 2013-01-05
  • 打赏
  • 举报
回复
引用 2 楼 whizer 的回复:
通过scanf输入文件的地址,你的目的是干什么?找到文件还是找到文件地址? 如果是为了找到文件,直接scanf文件名就可以了. 如果是为了找到文件地址,一般来说文件位于磁盘上,磁盘只有柱面/磁道/扇区的概念,即使加载到内存中,也是位于缓冲区中的临时地址.如果非要开辟一块内存存储你的文件,你可以自己malloc一块,然后对内存进行操作,最后把这块内存拷贝到文件.
我想通过输入一个文件夹的地址来显示出这个文件夹里所有文件的列表,包括文件夹里面的多层文件。
huhaifengasd 2013-01-05
  • 打赏
  • 举报
回复
学习了,楼上1不错
ForestDB 2013-01-05
  • 打赏
  • 举报
回复

# include <stdio.h>

int main()
{
    char filename[BUFSIZ];
    printf("enter a file name: ");
    scanf("%s", filename);
    printf("%s\n", filename);

    return 0;
}

enter a file name: C:\test\1.txt
C:\test\1.txt

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧