This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F5438A:fopen -无法在运行时打开名称文件

Guru**** 2585275 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/618015/compiler-msp430f5438a-fopen---fail-to-open-name-file-in-runtime

部件号:MSP430F5438A

工具/软件:TI C/C++编译器

您好,
我将MSP430与CCS 5.3 配合使用。
并使用msp430.5438万a。


问题:
要打开的文件的名称在编译时未知,仅在运行时未知。
因此,如果我使用以下语句:

//////
Char FileToOpen {50]={0};
...从...中读取FileToOpen
fin = fopen ((const char *) FileToOpen,"r");
Fin返回NULL,因此它失败。 (为什么??)

但如果我写:
fin = fopen ("...\filein. txt","r");
打开功能成功。

在第一种情况下,是否有人知道原因:fopen ((const char *)FileToOpen,"r"),
功能失败

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Asher!

    我不熟悉fopen功能,但这是

    char FileToOpen{50]={0};

    看起来错误-我认为应该是[50]而不是{50]

    Dennis

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然,但这是一个错误(抱歉)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我似乎发现了问题,
    将文件名读取为char FileToOpen[50](该名称取自list_of_files_name.txt)是通过fgets完成的
    因此,文件名将与源行(0x0A)一起添加。
    解决方法是使用fscanf读取文件名