Noob再次来到这里。我试图回答第1章的第22次练习,我想我被卡住了。
练习是在最后一个非空白字符之后创造性地折叠一条长行,但我所做的是在字符串中吃一些字符。
继承我的代码:
int folder(char line[], int limit)
{
int count = 0;
int c, a, mod_a;
mod_a = 0;
a = 0;
while((c = getchar()) != EOF && c != '\n' && count < limit - 1)
{
++a;
mod_a = a % LINEBREAK;
switch(mod_a){
case 0:
while(a >= count - LINEBREAK + 1)
{
--a;
if(line[a] == ' ' || line[a] == '\t')
{
line[a] = '\n';
}
else
continue;
}
a = count;
break;
default:
line[count] = c;
break;
}
++count;
}
line[count + 1] = '\0';
printf("\"");
for(int each = 0; each < count; ++each)
printf("%c", line[each]);
printf("\"");
printf("\n");
return count;
}
当我选择LINEBREAK = 5时,我得到以下内容:
./ex1-22
this is a line
"thiss
a
ine"
我不明白丢失的角色发生了什么。 请问我做错了什么?
答案 0 :(得分:0)
您需要为每个计数值设置line[count]
。您的代码在line[count]
时无法设置a % LINEBREAK == 0
。