c - 如何读取字符直到一个字符?
问题描述
我正在尝试执行一个循环,从文件中读取单个字符,直到找到'\n'
或'*'
.
这是我写的循环:
i=0;
do {
fscanf(fin,"%c",&word[i]);
i++;
} while(word[i]!='*'&&word[i]!='\n');
现在我试图看看为什么它不能与调试器一起工作。当我word[i]
在它之后立即打印时,它会向我显示正确的字符,但是,如果我在与它进行比较时fscanf
尝试打印,或者它会向我显示,并且循环永远不会结束。word[i]
'*'
'\n'
word[i]
'\000'
我也试过,fgetc
但我有同样的错误。
解决方案
您必须确保您正在处理的字符与您刚刚读取的字符相同。
实际上,您在测试单词 [i] 之前增加计数器i
,这就是您的检查失败的原因。
试试吧
i=0;
do {
fscanf(fin,"%c",&word[i]);
}while(word[i]!='*'&&word[i++]!='\n');
我宁愿将检查移到循环中(如果条件满足则中断),同时检查单词数组长度的测试。
推荐阅读
- android - 如何在 onCreateView 中更改子视图的可见性?
- python - AWS Lambda 函数附加字符作为返回
- javascript - 如果用户存在,则仅使用 Google Auth Provider 进行身份验证
- google-cloud-platform - google cloud platform blob.download_to_file 文件下载位置
- sql-server - 如何编写更改其数据源中的数据或创建新表的操作查询?
- javascript - JavaScript 中的 '...' 有什么作用?
- google-apps-script - 根据 Google API 脚本创建 Google 文档
- java - 将节点元素添加到 ArrayList 并在列表上调用堆方法,抛出持久索引越界异常
- python - 如何根据另一个列表获取列表的子列表?
- python - 与准确度相比,Keras top_k_categorical_accuracy 指标极低