【问题标题】:Compilation Error in C-File handlingC 文件处理中的编译错误
【发布时间】:2013-10-17 03:00:06
【问题描述】:
#include<stdio.h>
#include<conio.h>
FILE *fp;
int main()
{
  int val;
  char line[80];
  fp=fopen("\Users\P\Desktop\Java\a.txt","rt");
  while( fgets(line,80,fp)!=NULL )
   {
     sscanf(line,"%d",&val);
     printf("val is:: %d",val);
   }
   fclose(fp);
   return 0;
}

为什么 fp=fopen("\Users\P\Desktop\Java\a.txt","rt") 行会出现编译错误?

【问题讨论】:

  • 什么是编译错误?尝试转义反斜杠?

标签: c error-handling compiler-errors


【解决方案1】:

转义你的反斜杠。

fp=fopen("\\Users\\P\\Desktop\\Java\\a.txt","rt");

【讨论】:

    【解决方案2】:
    xx.c:8:12: error: \u used with no following hex digits
      fp=fopen("\Users\P\Desktop\Java\a.txt","rt");
               ^
    xx.c:8:12: warning: unknown escape sequence '\P'
    xx.c:8:12: warning: unknown escape sequence '\D'
    xx.c:8:12: warning: unknown escape sequence '\J'
    

    反斜杠的问题。反斜杠是 C 字符字符串中的转义符。

    试试这个

      fp=fopen("\\Users\\P\Desktop\\Java\\a.txt","rt");
    

    或者这取决于您的操作系统:

      fp=fopen("/Users/P/Desktop/Java/a.txt","rt");
    

    【讨论】:

      【解决方案3】:

      您可能熟悉如何在 C 字符串中使用 "\n"(换行符)和 "\t"(制表符)。

      编译器将查看任何\&lt;Character&gt; 并尝试将其解释为Escape-Sequence

      所以,在你写"\Users\P\Desktop\Java\a.txt" 的地方,编译器正试图处理 \U\P\D\J\a 作为特殊的转义序列。
      (似乎唯一有效的是\a,即Bell/Beep 序列。其他的应该都会产生错误)

      正如其他人所说,使用\\ 插入文字反斜杠字符,开始转义序列。

      P.S. 很遗憾您没有在问题中包含编译器消息。 最糟糕的问题都说“我遇到了一个错误”,而没有描述错误是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多