2
如何讀取和寫入ini文件:我想添加新的屬性到現有的。我想將ini文件寫入臨時文件,並最終將新的屬性添加到它。新的屬性將有頭,名稱,說明,價值和佈局(如:1號線& 3)Ini文件讀取和寫入+添加新屬性+ matlab
#---------------
#頭
# - -------------
[名]%
型 #遞減
值
fileData = [];
fh = fopen(fileName, 'r'); % read handle
tname=tempname();
wfh =fopen(tname,'w'); % write handle
line = fgetl(fh);
val = '';
Prop ='';
type = '';
header = '';
desc= '';
while ischar(line)
if strcmpi(line(1),'#') && strcmpi(line(3),'=')
layout = line(2:end);
elseif strcmpi(line(1),'#')&& ~strcmpi(line(3),'=')
header = line(2:end);
else
Prop = regexp(line,{'\[*\w+\]\s*%\s*.*\s*'},'match');
[property data_type] = strtok(Prop,'%')
prop_p = property{1};% property_name
prop_per = regexprep(prop_p,{'\[','\]'},'');
prop = prop_per{1};
Dtype = data_type{1}; % datatype
dtype = strtrim(strrep(Dtype,'%',''));
DATA_type = dtype{1};
end
% How can i define filedname (prop) for the 'layout' and 'header' as they are found in lines before the actual'prop'.
% From command window
% Undefined variable prop.
% Error in ecco2511>add (line 212)
% fileData.(prop{1}).layout = layout;
desc = fgetl(fh); % description
desc = desc(1:end);
line = fgetl(fh);
val = line(1:end);
fileData.(prop).layout = layout;
fileData.(prop).header = header;
fileData.(prop).type = DATA_type;
fileData.(prop).desc = desc;
fileData.(prop).val = val;
line = fgetl(fh); % keep reading
end
if ~isfield(fileData, propName)
fileData.(propName).val = newVal;
fileData.(propName).type = datatype;
fileData.(propName).desc = description;
fileData.(propName).layout = layout;
fileData.(propName).header = header;
else
error ('property %s already exists, use set to change its value',propName);
end
fileData = orderfields(fileData);
propNames = fieldnames(fileData);
for ii = 1:numel(propNames)
fprintf(wfh,'%s\r',fileData.(propNames{ii}).layout);
fprintf(wfh,'\n');
fprintf(wfh,'%s\r',fileData.(propNames{ii}).header);
fprintf(wfh,'\n');
fprintf(wfh,'%s\r',fileData.(propNames{ii}).layout);
fprintf(wfh,'\n');
fprintf(wfh, '[%s]%s\r', (propNames{ii}),fileData.(propNames{ii}).type);
fprintf(wfh,'\n');
fprintf(wfh,'#%s\r',fileData.(propNames{ii}).desc);
fprintf(wfh,'\n');
fprintf(wfh,'%s\r',fileData.(propNames{ii}).val);
fprintf(wfh,'\n');
end
fclose(fh);
fclose(wfh);
[status,errmsg]= movefile(tname,fileName,'f');
fprintf(wfh,'[%s] %%% s \ r',propNames {ii},fileData。(propNames {ii})。 一個您是路過%S的參數不是字符串,只是一個斷點或「鍵盤」後,這兩個變量 您fprintf中前行,然後添加 衛生組織的「變量名」,並張貼什麼呢說。有人可能會提供幫助。 – sridutt 2013-05-13 02:39:45
嗨Sridutt,這是正確的propName和類型變量是單元格。我將不勝感激任何幫助。名稱大小字節類屬性 propNames 2x1 244 cell – 2013-05-13 06:16:04
嘗試使用cell_variable_name {index_number}將單元格內容解壓縮爲字符串。 – sridutt 2013-05-13 09:40:02