【问题标题】:function inserting text to file. Matlab将文本插入文件的函数。 MATLAB
【发布时间】:2013-11-22 02:45:03
【问题描述】:

我目前正在研究该功能

function[check] = store( filename, persons )

fid = fopen(filename,'w');

if exist('fid')
    check = true;
else
    check = false;
end


for i=1:length(persons)

    sprintf(fid, '%s\n',serialize_person(persons(i)));
end
end

Serialize_person 返回一个 。 如果 store 函数创建一个名为 'filename' 的 .txt 文件并将 serialize_person(persons(i)) 放在该文本文件中的第 i 行,我想要什么。

但是,即使 serialize_person 本身运行良好,当我尝试运行 store 函数时,我也会收到错误消息

Attempt to reference field of non-structure array.

Error in serialize_person (line 3)
out=sprintf ( '<%s>#%s#<%i>\n' , person.name, serialize_date( person.date_of_birth),
person.phone );

Error in store (line 14)
sprintf(fid, '%s\n',serialize_person(persons(i)));

对可能出现的问题有任何有根据的猜测吗?

【问题讨论】:

  • 您确定您在serialize_person 中引用的person 变量实际上是一个结构吗?该错误表明它不是。
  • 我想我现在已经修好了,应该是 serialize_person(persons{i}) 而不是 (i) ,因为我接受了一个结构单元。

标签: matlab text compiler-errors


【解决方案1】:
function[check] = store( filename, persons )

fid = fopen(filename,'w');

if exist('fid')
    check = true;
else
    check = false;
end


for i=1:length(persons)

    sprintf(fid, '%s\n',serialize_person(persons{i}));
end
end

这是引起人们注意的那些简单错误之一。 Persons 是一个结构单元,每个结构都可以放入 serialize_person 中。所以解决问题的方法就是在for循环中将(i)改为{i}。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多