文本文件I / O
247(30天)
显示旧的评论
编写一个函数
char_counter
计数一定数量的字符在文本文件中。函数有两个输入参数,
帧
,一个字符的文件名和向量
字符
文件中,字符数。函数返回
charnum
,发现的字符数。如果文件没有找到
字符
不是一个有效字符,函数返回1。作为一个例子,考虑下面的运行。“简单的文件。txt”包含一行:“这个文件应该有三的……”
charnum = char_counter (“simple.txt”,“一个”)
charnum =
3
函数charnum = char_counter(帧,字符)
fid = fopen(帧);
如果fid < 0
charnum = 1;
返回;
结束
如果比较字符串(字符,”)= = 1
charnum = 0;
返回;
结束
如果双(字符)> = 35 & &双(字符)< = 43 & &双(字符)~ = 39 & &双(字符)~ = & &双(字符)~ 41 = 40
charnum = 0;
返回;
结束
如果双(字符)> = 60 & &双(字符)< = 64 & &(字符)~ = 63的两倍
charnum = 0;
返回;
结束
如果双(字符)= = 81 | |双(字符)= = 88 | |双(字符)= = 90
charnum = 0;
返回;
结束
cc = fgets (fid);
sumv = 0;
而ischar (cc)
z = sprintf (' % s ',cc);
k = strfind (z,字符);
sumv = sumv +长度(k);
cc = fgets (fid);
结束
charnum = sumv;
如果charnum = = 0
charnum = 1;
返回;
结束
你们能告诉这段代码有什么问题吗?
答案(17)
林嘉绮刘
2019年9月3日
函数charnum = char_counter(框架、字符)
fid = fopen(框架,“r”);
如果fid < 0
charnum = 1;
返回
结束
如果ischar(字符)= = 0
charnum = 1;
返回
结束
所寄物品= fscanf (fid,“% c”);
charnum = count(内容、人物);
结束
2的评论
沃尔特·罗伯森
2020年9月15日
fscanf()没有计数问MATLAB文件中读取尽可能仍然匹配给定的格式。给出的格式是% c,匹配任何一个角色,因为每个字节存储在文件可以解释为一个字符,结果用fscanf % c的格式,没有数,是整个余下的文件读取一个字符。
…有一天我应该测试R2020a或之后,和字节流,不代表有效UTF8, % c是否会停止阅读这一点……
阿卡什Dengwani
2020年12月24日
函数水资源charnum = char_counter(帧)
fid = fopen(帧,“rt”);
如果fid < 0
charnum = 1;
返回
结束
行= fgets (fid);
苏= 0;
而ischar(线)
lo = = =水资源;
苏苏= +总和(lo (:));
行= fgets (fid);
结束
如果双(水资源)> 127 | |双(水资源)< 0 | | ~ ischar(水资源);
charnum = 1;
其他的
charnum =苏;
结束
结束
4评论
沃尔特·罗伯森
2021年9月2日
从文件中读()* char和正的大小会导致从文件中读()返回一个包含所有剩余字符的特征向量文件。那些将被存储在变量命名
行
特征向量(大多数情况下)作为16位整数的数组存储unicode代码点。Unicode是一个国际标准,给出了一个具体的订购大量的字符和符号;
https://home.unicode.org/
。例如字符“A”是存储为16位整数价值65。他们真的是数字内部(连同一个国旗,表示数值代表人物。)
= =操作符是平等测试操作符。在这种背景下,= =用于比较字符编码(整数)用于表示中的数据
行
变量,用于表示的字符代码存储在的角色
水资源
这是一个字符。所以内部有一个数值向量(“行”)相比,数字标量(“水资源”)。比较一个矢量和标量的结果是由MATLAB是一个逻辑矢量,定义的值
假
每个地方比较失败的
真正的
每个地方的比较成功。所以= =是一个逻辑的输出向量长度相同的变量
行
。
点之后你需要知道什么是逻辑
假
由数值表示0,和逻辑
真正的
由数值1表示。正因为如此,当你想知道有多少位置比较举行,你可以()和矢量,贡献1为每个之和
真正的
最后的结果将是地方比较的数量是真实的。
那么将会存储在
苏
是地方的数量一个字符变量
行
字符变量是一样吗
水资源
。
Pranav Mishra
2020年6月8日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
如果(fid < 0)
charnum = 1;
返回;
结束
如果(ischar(字符)= = 0)
charnum = 1;
其他的
c = 0;
oneline = fgets (fid);
而ischar (oneline)
character_line = char (oneline);
[b] =大小(strfind (character_line、性格));
c = c + b;
oneline = fgets (fid);
结束
charnum = c;
结束
文件关闭(fid);
结束
哈里Kiran Tirumaladasu
2020年6月21日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“r”);
如果fid < 0 | | ischar(字符)= = 0
charnum = 1;
错误(输入的文件是不正确的或输入一个字符不能被发现的);
返回;
结束
incount = fscanf (fid,“% c”);
charnum = count (incount字符);
0评论
Adityesh Satam
2020年7月23日
我能得到所有正确的使用这段代码:
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
charnum = 0;
2 = 0;
如果fid < 0
charnum = 1;
返回;
结束
如果ischar(字符)= = 0
charnum = 1;
结束
%阅读文件一次一行
one_line = fgets (fid);
而ischar (one_line)
为2 = 1:长度(one_line)
如果比较字符串(one_line (ii),字符)& & ischar(字符)
charnum = charnum + 1;
结束
结束
one_line = fgets (fid);
结束
文件关闭(fid);
结束
奥雅纳Kumar Debnath
2020年6月1日
我试图回答这个问题。但我困在那里,任何一个能帮我找到代码中的错误吗?
免责声明=我是一个新手。
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
如果fid < 0
错误(“打开文件错误\ n”);
charnum = 1;
返回;
结束
总= fgets (fid);
2 = 1;
大小=(总);
charnum = 0;
而二世< =
如果(2)= =“性格”;
charnum = charnum + 1;
其他的
2 = 2 + 1;
结束
结束
沙辛格
2020年6月7日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“r”);
如果fid < 0 | | ischar(字符)= = 0
charnum = 1;
返回
结束
所寄物品= fscanf (fid,“% c”);
charnum = count(内容、人物);
结束
3评论
沃尔特·罗伯森
2021年2月20日
当
返回
遇到,MATLAB函数,回到这个地方叫做一模一样如果MATLAB函数的结束。它不执行任何更多的代码的功能。
在辛格沙发布的代码,如果
返回
没有去过,之后charnum被分配1,代码之后继续吗
如果
,所以代码将尝试fscanf ()。但如果支撑材是< 0指示文件不能被打开,然后fscanf (fid)将是一个错误,函数会崩溃。
总是有可能重写代码使用
返回
不使用
返回
,但它可以是混乱的。在上面的代码中可以写成
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“r”);
如果fid < 0 | | ischar(字符)= = 0
charnum = 1;
其他的
所寄物品= fscanf (fid,“% c”);
charnum = count(内容、人物);
结束
结束
在这种情况下这是不坏。但考虑适当的检查ischar ():
函数charnum = char_counter(帧,字符)
如果ischar(字符)= = 0
charnum = 1;
其他的
fid = fopen(帧,“r”);
如果fid < 0
charnum = 1;
其他的
所寄物品= fscanf (fid,“% c”);
charnum = count(内容、人物);
结束
结束
结束
和比较,相同的回报:
函数charnum = char_counter(帧,字符)
如果ischar(字符)= = 0
charnum = 1;
返回
结束
fid = fopen(帧,“r”);
如果fid < 0
charnum = 1;
返回
结束
所寄物品= fscanf (fid,“% c”);
charnum = count(内容、人物);
结束
请注意,使用
返回
更紧凑的代码,不需要尽可能多的if / else水平。
Ujjawal Barnwal
2020年6月8日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
charnum = 0;
如果fid < 0 | | ~ ischar(字符)
charnum = 1;
返回;
结束
oneline = fgets (fid);
而ischar (oneline)
长度=(中(oneline,字符));
charnum = charnum +一个;
oneline = fgets (fid);
结束
文件关闭(fid);
结束
萨钦Patare
2020年9月27日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
如果fid < 0
charnum = 1;
返回
结束
x = fileread(帧);
如果ischar(字符)= = 1
一个=中(x,字符);
b =大小(一个);
charnum = b (1、2);
其他的
charnum = 1;
结束
3评论
沃尔特·罗伯森
2020年9月28日
测试的一个优势fopen()在测试文件存在与存在,是顺利fopen()将会失败如果文件存在但你没有权限阅读它,或者是文件存在但锁定所以你不能读它。在这些情况下,fileread()将产生一个异常,必须处理一个try / catch复制fopen()能够检测到文件无法读取。
Sumanth Bayya
2021年10月19日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
charnum = 0;
2 = 0;
如果fid < 0
charnum = 1;
返回
结束
如果ischar(字符)= = 0
charnum = 1;
结束
one_line = fgets (fid);
而ischar (one_line)
为2 = 1:长度(one_line)
如果比较字符串(one_line (ii),字符)& & ischar(字符)
charnum = charnum + 1;
结束
结束
one_line = fgets (fid);
结束
文件关闭(fid);
结束
Milad Mehrnia
2021年11月1日
函数charnum = char_counter(帧,c)
fid = fopen(帧,“rt”);
charnum = 0;
如果~ ischar (c)
charnum = 1;
elseiffid < 0
charnum = 1;
其他的
行= fgets (fid);
而ischar(线)
为i = 1:长度(线)
如果(我)= = c
charnum = charnum + 1;
结束
结束
行= fgets (fid);
结束
文件关闭(fid);
结束
结束
Duong阮
2022年3月13日
编辑:Duong阮
2022年3月13日
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);
charnum = 0;
如果fid < 0 | | ~ (ischar(字符))
charnum = 1;
返回
结束
%如果你不使用“返回”下面的while循环将分配charnum = 0;
oneline = fgets (fid);
而ischar (oneline)
[~,临时]=大小(strfind (oneline、性格));
charnum = charnum +温度;
oneline = fgets (fid);
结束
文件关闭(fid);
齐亚•拉赫曼
2022年9月1日
嗨,伙计们,
请检查我的代码,并建议我是否可以改善
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);%打开名为(帧)的文本文件读取(rt)
如果fid < 0 | | ~ ischar(字符)%检查文件的存在和检查如果char_counter的第二个参数是有效的字符
%流(“打开文件错误% s \ n \ n”,帧);
charnum = 1;
返回;
结束
charnum = 0;
oneline = fgets (fid);%读取第一行使用fgets”
而ischar (oneline)
为i = 1:长度(oneline)%的循环遍历每个char
b = strcmp (oneline(我),字符);%比较i char和第二参数(字符)
如果b
charnum = charnum + 1;%如果我们发现char然后加1
结束
结束
oneline = fgets (fid);%读下一行,回到在线
结束
文件关闭(fid);%关闭文件
结束
Rahim Ullah
2023年1月18日
你的代码看起来冗长而复杂,请试试这个
函数charnum = char_counter(帧,字符)
fid = fopen(帧,“rt”);%文件打开
如果fid < 0%检查文件是否正确与否
流(的文件不能打开)
charnum = 1;%,以防文件没有打开由于任何原因
返回
结束
file_content = fileread(帧);%读取文件内容并将其存储为字符串
charnum = sum (file_content = =字符);%和所有匹配的字符在字符串中找到
如果ischar(字符)= = 0%检查有效的字符
charnum = 1;
返回
结束
5个评论
1月
2023年1月19日
编辑:1月
2023年1月19日
@Rahim Ullah
:你的答案是一个有效的贡献有关Matlab和不违反政策。因此,编辑不会删除它。
我插入一个
fclose (fid)
或使用
isfile ()
代替。但这是你的贡献。随意做的,你喜欢什么。