在linux下使用C读取文本。我应该把文本文件放在哪里?

时间:2015-04-14 02:25:20

标签: c

我试图在Linux下使用C读取txt文件。     FILE * fp的=的fopen("的test.txt"" R&#34); 我有上面的代码,但它告诉我"分段错误(核心转储)"。 这是因为我没有将我的txt放在正确的目录下吗?

int main(int argc, char*args[])
{
//printf("%d\n", argc);
int i;
for(i=0;i<argc;i++)
{
printf("%s ", args[i]);
}
int numProcesses=10;
int memorySize=atoi(args[1]);
int pageSize=atoi(args[2]);
int alloAlg=atoi(args[3]);
int evicAlg=atoi(args[4]);
int globLoc=atoi(args[5]);
int peroid=atoi(args[6]);

FILE*fp;
fp=fopen("Desktop/plist.txt","r");
char buff[1000];
//fgets(buff,100,fp);
//printf("%s",buff);
}

3 个答案:

答案 0 :(得分:2)

当您打开没有路径的文件时,假定该文件位于当前目录中。至于你的分段错误 - 你应该在尝试从它读/写之前测试FILE针对NULL的指针。

答案 1 :(得分:0)

将您的文本文件放在创建可执行文件的同一文件夹中。

答案 2 :(得分:0)

由于FILE *fp = fopen("test.txt","r")命令,您无法获得分段错误。 (如果这是你在想的话)

如果您尝试按fopen()打开的文件不存在。在这种情况下,fopen()将只返回NULL。

您可能正在获得分段错误,因为您尝试使用文件指针fp读取内容。例如:你正在做char ch = fgetc(fp)之类的事情。

为避免这种情况,您始终可以检查fopen()返回的值。如果fopen()无法打开文件,则返回NULL。

所以你可以这样做:

FILE *fp = fopen("text.txt","r");
if(fp == NULL)
{
    //Your code to handle this case where file was not opened by fopen
}
else
{
    //Do what you wanted to do with your file
}

所以,回答你的问题是肯定和否。

是:因为分段错误是因为fp包含NULL,因为你的txt文件不在你的目录中。

否:因为分段错误实际上是因为你试图访问你不应该访问的内存(),而不是因为目录中没有txt文件,但是注意到它的根本原因是你的文件不在目录中。