【发布时间】:2026-02-01 11:40:02
【问题描述】:
这是我的简单 C 代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int i, j, k;
void main(){
int limit=10;
char txt[]="This text would be cut, according to limit";
clrscr();
for(i; i<strlen(txt); i++){
if(txt[i] == 32) k=i;
if(i!=0 && i%limit == 0){
if(txt[i] != 32) i=k;// This is what bugs the program
while(j<i) printf("%c",txt[j++]);
printf("\n");
}
}
getch();
}
我的程序做了什么:
- 它通过递增计数变量到一定的限制
- 如果当前字符是空格(ASCII 32),则将
i的索引复制到k - 如果索引达到限制,它将启动以下操作:
- 如果最后一个字符不是空格,它会将
i设置为通过k的最后一个空格的索引 - 它将打印从
j中使用的最后一个索引到i的所有字符,顺便说一下,只到最后一个空格 - 它将创建一个新行
- 如果最后一个字符不是空格,它会将
- 最后,它从最后一个索引
i继续循环,循环后必须递增
通过调试模式,我发现打印第一行后,i 保持在k 设置的值,并创建了一个无限循环...... 我真的不知道为什么...
对于那些询问我期望什么输出的人来说,例如,我有字符串
"This text would be cut, according to limit"
这将限制为每行十个字符,但如果最后一个字符不是空格,它只会在第一行打印未溢出的单词,然后继续执行此操作直到字符串结束,这样做的目的是保存时间,而不是手动计算字符串,然后在每个限制处添加 \n
示例输出:
This text
would be
cut,
according
to limit
【问题讨论】:
-
你想通过改变循环内的循环计数器来达到什么目的?
-
请不要使用 ASCII 值作为魔术常量。 C 有
' '表示一个空格。 -
你期望什么输出?