c语言读取文件的路径怎么设定

有如下程序,运行后输入路径即可读取文本文件,现在我想让他实现读取和程序在同一目录下的文件student.dat,请问怎么改?#include<stdio.h>#inclu... 有如下程序,运行后输入路径即可读取文本文件,现在我想让他实现读取和程序在同一目录下的文件student.dat,请问怎么改?#include <stdio.h>
#include <stdlib.h>#define LINE 1024char *ReadData(FILE *fp, char *buf)
{
return fgets(buf, LINE, fp);//读取一行到buf
}void someprocess(char *buf)
{
printf("%s", buf);
}void main()
{
FILE *fp;
char *buf, filename[20], *p; printf("input file name:");
gets(filename);

if ((fp=fopen(filename, "r"))==NULL) {
printf("open file error!!\n");
return;
} buf=(char*)malloc(LINE*sizeof(char)); while(1) {
p=ReadData(fp, buf);//每次调用文件指针fp会自动后移一行
if(!p)//文件读取结束则跳出循环
break;
someprocess(buf);
}
}
展开
 我来答
韧劲9
推荐于2016-03-31 · TA获得超过9224个赞
知道小有建树答主
回答量:1638
采纳率:92%
帮助的人:362万
展开全部
//获取指定目录下的所有文件列表 author:wangchangshaui jlu
char** getFileNameArray(const char *path, int* fileCount)
{
int count = 0;
char **fileNameList = NULL;
struct dirent* ent = NULL;
DIR *pDir;
char dir[512];
struct stat statbuf;

//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path);
return NULL;
}
//读取目录
while ((ent = readdir(pDir)) != NULL)
{ //统计当前文件夹下有多少文件(不包括文件夹)
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name);
//得到文件信息
lstat(dir, &statbuf);
//判断是目录还是文件
if (!S_ISDIR(statbuf.st_mode))
{
count++;
}
} //while
//关闭目录
closedir(pDir);
// myLog("共%d个文件\n", count);

//开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间
if ((fileNameList = (char**) myMalloc(sizeof(char*) * count)) == NULL)
{
myLog("Malloc heap failed!\n");
return NULL;
}

//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path);
return NULL;
}
//读取目录
int i;
for (i = 0; (ent = readdir(pDir)) != NULL && i < count;)
{
if (strlen(ent->d_name) <= 0)
{
continue;
}
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name);
//得到文件信息
lstat(dir, &statbuf);
//判断是目录还是文件
if (!S_ISDIR(statbuf.st_mode))
{
if ((fileNameList[i] = (char*) myMalloc(strlen(ent->d_name) + 1))
== NULL)
{
myLog("Malloc heap failed!\n");
return NULL;
}
memset(fileNameList[i], 0, strlen(ent->d_name) + 1);
strcpy(fileNameList[i], ent->d_name);
myLog("第%d个文件:%s\n", i, ent->d_name);
i++;
}
} //for
//关闭目录
closedir(pDir);

*fileCount = count;
return fileNameList
匿名用户
2013-08-09
展开全部
"student.dat",或者直接设定它的路径,比如在C盘WINDOWS下就是:"C:\\WINDOWS\\student.dat"注意要多加\,也就是说是\\
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式