求助:fopen()

pengchao_214 2009-11-02 09:43:46
代码如下:
switch(type)
{
case '1': ini=fopen("./segweekdays.txt","rt");break;
case '2': ini=fopen("./segweekend.txt","r");break;
case '3': ini=fopen("./seglowday.txt","r");break;
}

我在window下执行,读不到segweekdays.txt文件,若把文件名改为segweekd.txt 即可
但是在 Linux下执行,不会发生此问题。 同样代码在不同运行环境下,结果不同?这是为什么?
查找之后好像有一个“Doc8.3文件名的问题”,不过不知道具体意思
...全文
146 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolzjwx 2009-11-02
  • 打赏
  • 举报
回复
改文件名可以的话,是不是内存的问题?
我之前编写代码 有的时候加一句注释就出错 去掉注释就不会出错
最后 都是由于对内存的处理不当导致的
jernymy 2009-11-02
  • 打赏
  • 举报
回复

我用的VC6.0的是都可以打开这些文件的



char *file_na[] =
{
"./segweekdays.txt",
"./segweekend.txt",
"./seglowday.txt"
};

void ReadFileByName(char type)
{
FILE *ini = NULL;

switch (type)
{
case '1':
ini = fopen(file_na[type-'1'], "rt");
break;

case '2':
ini = fopen(file_na[type-'1'], "r");
break;

case '3':
ini = fopen(file_na[type-'1'], "r");
break;

default:
break;
}

if (NULL != ini)
{
printf("open file is %s successful !\n", file_na[type-'1']);
fclose(ini);
}
else
{
printf("open file is %s failed !\n", file_na[type-'1']);
}
}

int main(int argc, char **argv)
{
char cStr;

for (cStr = '1'; cStr <= '3'; cStr++)
{
ReadFileByName(cStr);
}

return 0;
}




在显示结果如下:

open file is ./segweekdays.txt successful !
open file is ./segweekend.txt successful !
open file is ./seglowday.txt successful !
Press any key to continue


不过搂住的如果用的是tc2.0的,我倒没有测试过
t1397018 2009-11-02
  • 打赏
  • 举报
回复
我记得Dos是限定8个字符.
t1397018 2009-11-02
  • 打赏
  • 举报
回复
改文件名可以的话,是不是文件名的长度的问题?
luc_cj 2009-11-02
  • 打赏
  • 举报
回复
估计就是文件路径的问题,win下路径应该用\\来表示
happyfen2005 2009-11-02
  • 打赏
  • 举报
回复
你文件里的代码有struct 之类的类型,在linux和 win他们分分配空间的方式是不同的!这也很有可能相同代码不能在两个地方运行的
happyfen2005 2009-11-02
  • 打赏
  • 举报
回复
rt 代表以读文件的格式打开, 默认情况下就是你也可以只写r
riftvalley 2009-11-02
  • 打赏
  • 举报
回复
楼主在win下能读到后两个文件?
plottowan_1977 2009-11-02
  • 打赏
  • 举报
回复
Windows下路径应该是反斜杠,"\\"
Linux下面是斜杠,"/"
试试看吧
Caballeroo 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 selooloo 的回复:]
"rt"是什么打开方式啊?
[/Quote]

linux 与win下的文件路径表示不一样;linux使用‘/’,win使用‘\’
hallowwar 2009-11-02
  • 打赏
  • 举报
回复
没有rt的操作方式。
selooloo 2009-11-02
  • 打赏
  • 举报
回复
"rt"是什么打开方式啊?
liangyonglou 2009-11-02
  • 打赏
  • 举报
回复
学习
anhongsen521 2009-11-02
  • 打赏
  • 举报
回复
...
iisbsd 2009-11-02
  • 打赏
  • 举报
回复
8.3意思是文件名最多可以是8个字符,扩展名最多可以是3个字符。
pengchao_214 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 t1397018 的回复:]
我记得Dos是限定8个字符.
[/Quote]


我从网上搜到的也是有 一个 Doc8.3的原因, 不过具体Doc8.3的定义是什么?不知道能否给我说下呢
pengchao_214 2009-11-02
  • 打赏
  • 举报
回复
我用的TC2.0, 我觉得应该是不是“./”的问题,因为我的文件名 少于8个字符或者为8个字符的话就可以读到,如果大于8个字符的文件名就会读不到。我想知道 “Doc8.3文件名的问题”的定义呢

69,382

社区成员

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

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