【发布时间】:2013-04-07 14:44:10
【问题描述】:
myfile.m 程序读取一个 txt 文件,其中包含一共 25 个名称和数字,如
示例:
约翰·道拉斯 15986
菲利普公爵 357852
等等。
程序将它们转换为
15986 Doughlas John
357852 duch Filip
这是没有功能的,我得到了太多的输出。
Error message:
Error using disp
Too many output arguments.
Error in red4 (line 26)
array = disp(All);
原文如下:
function array = myfile(~)
if nargin == 0
dirr = '.';
end
answer = dir(dirr);
k=1;
while k <= length(answer)
if answer(k).isdir
answer(k)=[];
else
filename{k}=answer(k).name;
k=k+1;
end
end
chose=menu( 'choose file',filename);
namn = char(filename(chose));
fid = fopen(namn, 'r');
R = textscan(fid,'%s %s %s');
x=-1;
k=0;
while x <= 24
x = k + 1;
All = [R{3}{x},' ',R{1}{x},' ',R{2}{x}];
disp(All)
k = k + 1;
end
fclose(fid);
现在我从functions 之类的人和网站那里得到了很多很好的答案,但我无法通过函数获得上述结果。
我已经尝试将它们结合起来并得到了一些结果:
y = 15986 & [a,z,b] = myfile
y = 25 & myfile = x
y = numbers name1,2,3,4 and so one & myfile = fprintf(All)
y = & I used results().namn,
numbers name 1 & results().id, results().lastname
y =
numbers name 2 and so on.
我想要的结果是:
y = myfile
y =
15986 Doughlas John
357852 duch Filip
更新:像 Eitan T 说的那样改变它,但没有得到像上面那样的结果。
得到结果:
'约翰·多拉斯 15986'
'菲利普公爵 357852'
function C = myfile()
if nargin == 0
dirr = '.';
end
answer = dir(dirr);
k=1;
while k <= length(answer)
if answer(k).isdir
answer(k)=[];
else
filname{k}=answer(k).name;
k=k+1;
end
end
chose=menu( 'choose',filname);
name = char(filname(chose));
fid = fopen(name, 'r');
C = textscan(fid, '%s', 'delimiter', '');
C = regexprep(C{1}, '(\w+) (\w+) (\w+)', '$3 $2 $1');
fclose(fid);
【问题讨论】:
-
“有了它我得到了太多的输出”。你的意思是错误信息吗?如果是这样,你能把它包括进去吗?
标签: matlab return-value