c - 在 C 中测试存储的数组字符
问题描述
我刚刚开始学习 C,我正在尝试完成一个练习,我必须删除一行中的所有尾随空白字符。我的逻辑对我来说似乎很好,但是当我尝试测试一个字符是制表符还是空格时,即使它是,它也不会返回真实。
有问题的部分:
if ((s[ii] == ' ' || s[ii] == '\t') && trailing == 1)
整个事情:
#include <stdio.h>
#include <ctype.h>
#define MAXLINE 1000 /* maximum input line length */
int getline2(char line[], int maxline, char outputLine[]);
/* print above 80 character lines */
main()
{
char cl;
char sl[MAXLINE];
char ol[MAXLINE];
int i;
while((cl = getline2(sl, MAXLINE, ol)) > 0){
if(cl > 1){
printf("%d: %s", cl, ol);
}
}
}
/* getline: read a line into s, return length */
int getline2(char s[], int lim, char ss[])
{
int c, i, ii;
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!= '\n'; ++i){
s[i] = c;
}
int trailing = 1;
for(ii = i; ii >= 0; ii--){
if ((s[ii] == ' ' || s[ii] == '\t') && trailing == 1){
i--;
} else {
ss[ii] = s[ii];
trailing = 0;
}
}
if (c == '\n') {
ss[i] = c;
i++;
}
ss[i] = '\0';
return i;
}
解决方案
这个for
循环应该从i - 1
:
for(ii = i - 1; ii >= 0; ii--){
^^^^^
因为在上一个for
循环中,i
在字符串中添加尾随空格和制表符后递增s
。
推荐阅读
- django - 附加到一个字段的多个子字段,以及如何为用户提供添加许多这些字段的可能性
- javascript - 如何获取 cURL 代码以在 Windows 10 上编译?
- chat - 如何在一个话语中处理多个问题?
- python - 构建持续集成通道和工件时,如何在 GitLab 页面上生成 pelican 站点?
- python - 连接两个数组 Python
- android - 找不到与给定名称匹配的资源,CircleImageView 问题?
- android - 为什么在相对布局中添加开关或复选框按钮会弄乱整个布局?
- php - wordpress 在悬停状态下更改图标颜色
- python - 如何使用 pip install git+ 保存存储库?
- python - 如何在python中修复“没有名为'nredarwin'的模块”ImportError