- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是巨型 C 新生儿,您好
我正在尝试解决 KandR C 编程中的 entab 问题,但遇到了一个相当愚蠢的问题。在尝试解决这个问题时,我会计算所有空格达到 8 的倍数时的数量,如果是,我有一个循环,该循环应该后退并删除前面的七个空格,然后将第零个空格设为“#”代表一个选项卡。如果空格数不足 8,则空格应该用“.”表示。如果按下 Tab 键,用户还会得到一个“#”。我的问题是当我数到 8 时,空格不会被删除,如果我数到 9,我会得到一个“.#”。
请告诉我我的新手代码有什么问题吗?
#define TAB 8
#define SPACE 1
#define MAXLINE 10000
int entab(char line[], int limit);
int main(void)
{
char aline[MAXLINE];
int lenline = 0;
while((lenline = entab(aline, MAXLINE)) > 0)
;
return 0;
}
int entab(char line[], int limit)
{
int count = 0;
int c, a;
while((c = getchar()) != EOF && c != '\n' && count < limit - 1)
{
switch(c){
case ' ':
if(count != 0 && (count % TAB == 0))
{
a = count;
while(a > (count - TAB) -1)
{
line[a] = '\0';
--a;
}
line[count] = '#';
++count;
}
else
{
line[count] = '.';
++count;
}
break;
case '\t':
if (count < TAB)
{
line[count] = '#';
++count;
}
break;
default:
line[count] = c;
++count;
break;
}
}
line[count] = '\0';
printf("\"");
for(int each = 0; each < count; ++each)
printf("%c", line[each]);
printf("\"");
printf("\n");
return count;
}
我的输出是:输入 8 个空格时: ./ex1-21
"........"
当输入 9 个空格时: “#”
非常感谢您的指点!
最佳答案
您忘记将计数向后移动附近
a = count;
while(a > (count - TAB) -1)
{
line[a] = '\0';
--a;
}
line[count] = '#';
++count;
关于c - 我对 KandR C ex1-21 entab 的尝试需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40243437/
我使用调试器来查找我的错误。我能够找到错误是什么。但我不知道为什么会发生。错误在于,在完成 1 次 push 后,linep 变成了一些垃圾地址(添加了 1 个空格)。因此,在第二次push时,它在这
在普通文本编辑器中,选择文本 block ,然后按 Tab 进行 entab,按 Shift + Tab 进行 detab。 如何在 VIM 中 entab 或 detab 选定的文本 block ?
这个问题已经有答案了: I'm trying to understand the K&R's exercise 1-21 [duplicate] (1 个回答) 已关闭 4 年前。 Exercise
我正在自学 C 并通过 K&R 进行工作。我正在做练习 1-21: Write a Program entab that replaces strings of blanks by the minim
这里是巨型 C 新生儿,您好 我正在尝试解决 KandR C 编程中的 entab 问题,但遇到了一个相当愚蠢的问题。在尝试解决这个问题时,我会计算所有空格达到 8 的倍数时的数量,如果是,我有一个循
我是一名优秀的程序员,十分优秀!