c - 文件中的字符串长度
问题描述
我正在尝试创建一个程序,它从任何文件中获取一些文本,并使用下划线对每个字符(空格除外)进行编码'_'
。
例如,假设我们在文件中有两个单独的行中的单词"name"
和"code"
。该程序最终会这样做:
_ _ _ _
_ _ _ _
问题是当我运行代码时,第一行打印了一个额外的下划线,但最后一行打印正常。代码是:
while(1)
{
if(fgets(str, 100, fp) == NULL)
break;
for(i=0; i<strlen(str); i++)
{
if(str[i] != ' ')
{
printf("%c ", '_');
}
else
printf(" ");
}
printf("\n");
}
解决方案
这是因为fgets
保留了文件中每一行末尾的换行符,但最后一行不包含一个。该代码不测试空白字符,只测试实际空格。您可以删除换行符
str [ strcspn(str, "\r\n") ] = '\0';
推荐阅读
- vb.net - 为什么 Sendgrid API 在 VB.net 中显示错误?
- python - 从 django-rest-framework 应用程序自动发布到 Facebook 页面
- docker - 如何停止和启动整个集群 Swarm
- javascript - Redux 与自定义钩子
- lua - How to get 'self' from Lua event handler function?
- javascript - 从 Python 调用 javascript 函数,向 Javascript 发送参数,将结果返回给 Python
- javascript - 在客户端计算时差
- python - 3D scatter plot with in Python extracted from Dates
- pivot - GSuite App Maker - 如何透视数据源
- sqlite - 为什么此 Knex 迁移不强制列是唯一的?