查看: 68|回复: 4|关注: 0

[已答复] matlab gui读取TXT文件

[复制链接]

新手

5 麦片

财富积分


050


2

主题

15

帖子

0

最佳答案
发表于 3 天前 | 显示全部楼层 |阅读模式
您好:我想把TXT中的数据读到listbox里面以下是TXT的内容
Name Chinese Mathematic English
Jason 34 56 76
Victor 43 56 87
Julie 43 56 78
Snow 43 56 88
Andy 43 67 67
Crstal 45 76 65

写了以下代码
function chengjichanxun__OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
fin=fopen('chengji.txt','r')  %以只读方式打开
str=fgetl(fin);
[str1,str2,str3,str4]=textscan(str,'%s %s %s %s','delimiter',' ');
xingming(1)=str(1);
counter=2;
while feof(fin)==0
    str=fgetl(fin);
    [name,yuwen,shuxue,yingyu]=textscan(str,'%s %d %d %d','delimiter',' ');
    xingming(counter)=name;
    chengji(counter-1,:)=[yuwen shuxue yingyu];
    counter=counter+1;
end
set(handles.listbox1,'string',xingming);
guidata(hObject, handles);

然后运行系统出错
麻烦可以看一下嘛

这是错误信息

这是错误信息

MATLAB 基础讨论
版块优秀回答者

8

主题

474

帖子

83

最佳答案
  • 关注者: 20
发表于 3 天前 | 显示全部楼层
把你的读取部分改了一下,你看看
  1. fin=fopen('chengji.txt','r')  %以只读方式打开
  2. str=fgetl(fin);
  3. str_1=textscan(str,'%s %s %s %s','delimiter',' ');
  4. xingming(1)=str_1{1};
  5. counter=2;
  6. while feof(fin)==0
  7.     str=fgetl(fin);
  8.     str_2=textscan(str,'%s %d %d %d','delimiter',' ');
  9.     xingming(counter)=str_2{1};
  10.     chengji(counter-1,:)=str_2{2:4};
  11.     counter=counter+1;
  12. end
复制代码

新手

5 麦片

财富积分


050


2

主题

15

帖子

0

最佳答案
 楼主| 发表于 前天 10:05 | 显示全部楼层
fengziW 发表于 2020-3-27 20:06
把你的读取部分改了一下,你看看

function chengji_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to chengji (see VARARGIN)

% Choose default command line output for chengji
handles.output = hObject;
fin=fopen('chengji.txt','r')%以只读方式打开
str=fgetl(fin);
str_1=textscan(str,'%s %s %s %s','delimiter',' ');
xingming(1)=str_1{1};
counter=2;
while feof(fin)==0
str=fgetl(fin);
str_2=textscan(str,'%s %d %d %d','delimiter',' ');
xingming(counter)=str_2{1};
chengji(counter-1,:)=str_2{2:4};
counter=counter+1;
end
set(handles.listbox1,'string',xingming);
% Update handles structure
guidata(hObject, handles);
版主,首先你的程序我看懂了,比我的更简洁一点。然后我现在把你的程序放在opening function里面,点运行还是不对劲,我用的是2018a这个版本,可以劳驾您再看看嘛。

提示的错误信息

提示的错误信息

MATLAB 基础讨论
版块优秀回答者

8

主题

474

帖子

83

最佳答案
  • 关注者: 20
发表于 前天 11:45 | 显示全部楼层
你这个chengji是个按钮吧,那这个程序应该写在callback下面的

新手

5 麦片

财富积分


050


2

主题

15

帖子

0

最佳答案
 楼主| 发表于 前天 16:01 | 显示全部楼层
w我的设计界面上只有一个列表框和一个静态文本框,我现在想把TXT里面学生名字读到列表框里面。然后文件名字是chengji .然后我是写在chengji_openingfunction中的。出现了上面图片的错位。
请问我现在是应该把你修改好的程序写在哪个回调函数的下面啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表