【问题标题】:What is significance of /,//,\,\\ while specifying name of a file using fopen() in C?/,//,\,\\ 在 C 中使用 fopen() 指定文件名时有什么意义?
【发布时间】:2014-07-10 06:37:34
【问题描述】:

我把我的程序放在下面。我正在尝试通过使用两种方式之一以不同格式给出相同文件的名称来在屏幕上打印文本文件的内容 -

1.使用硬编码的文件名

2.用户取文件名(用户输入地址)

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
 FILE *fp;
 char ch;
// char str[30] = "d:\CPRog//triAl.tXT";
// char str[30] = "d:\Cprog//triAl.txt";
// char str[30] = "d:\CPRog\\triAl.tXT";
// char str[30] = "d:/\CPROG//triAl.tXT";
// char str[30] = "d:\\CPRog\\triAl.tXT";
// char str[30] = "d:/CPRog//triAl.tXT";
// char str[30] = "d:\CPRog/triAl.tXT";
// char str[30] = "d:/CPRog/triAl.tXT";
// char str[30] = "d:\CPRog/triAl.tXT";

 char str[30] = "D:\Cprog\trial.txt";

 clrscr();

// printf("\nEnter path of file to open : ");
// gets(str);
 fp = fopen(str,"rt");
 if(fp == NULL)
 {
   printf("\nError in opening file !");
   getch();
   exit();
 }
 while(!feof(fp))
 {
  ch = fgetc(fp);
  fputc(ch,stdout); // Print the character on screen.
 }
 fclose(fp);
 getch();
}

如果是硬编码地址,程序正在打印所有注释格式的文本文件内容。它正在显示消息

打开文件出错!

对于当前的硬编码地址。


如果是用户输入地址,我尝试了这些-

  1. D:\cprog\trial.txt : 打印文件内容。

  2. D:\cprog\\trial.txt : 打印文件内容。

  3. D:/cprog//trial.txt : 打印文件内容。

  4. D:/cprog/\trial.txt : 打印文件内容。

  5. D:/cprog/trial.txt : 打印文件内容。

  6. D:\\cprog\\trial.txt:无输出

  7. D://cprog//trial.txt:无输出

  8. D:\\cprog\trial.txt : 无输出

  9. D://cprog/trial.txt:无输出

为什么硬编码和用户输入法的地址指定格式不同? 另外,为什么有些格式显示输出而有些格式不在这两种方法中?指定地址时/,\,//,\,/\有什么意义?

【问题讨论】:

  • 您的示例中有一半无法编译。启用警告以了解原因。
  • 1 和 6 是相同的路径,但结果不同......那怎么样?
  • 这是int main,而不是void mainwhile(!feof()) 一如既往地是一个错误,它循环了一个额外的迭代。阅读 comp.lang.c 常见问题以了解原因。
  • @dragosht : 抱歉,现在我已经进行了更改。
  • @Jens : 如果我使用int main(),那么我应该使用return 0 而不是getch()!我说得对吗?(我不知道原因'为什么?'-Why@ 987654328@需要return 0?main()返回0给谁?)我会阅读你建议的FAQ。谢谢!

标签: c fopen


【解决方案1】:

我认为/ 很好,或者\\ 很好,但\ 是一个特殊字符,因为它用于转义特殊字符。因此,\t(例如)是一个选项卡(在源代码中)。如果用户键入 '\t',你会得到 '\' 和 't' 的等价物。

【讨论】:

  • 为什么是 rw?那是用于读/写,而 rt 用于在文本模式下阅读。
  • @Jens 我以前从未见过“rt”。已编辑。
猜你喜欢
  • 1970-01-01
  • 2012-02-14
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 2011-01-12
相关资源
最近更新 更多