【发布时间】:2013-08-04 09:27:05
【问题描述】:
我坚持这个练习。我不明白为什么下面的代码没有预期的结果。
该程序应该删除 cmets。在这个程序中,我不考虑字符串和/或字符文字。此外,仅出于测试目的,我在需要删除的点处放置空格而不是 NULL。
这里有两个测试:
test /* test123 ok test */
生成:
测试 * test123 ok 测试 */
//不起作用
生成到:
不行
另外,如果输入太大,我会遇到分段错误
#include <stdio.h>
#define MAXLENGTH 1000
void removec(char code[],int length);
int main()
{
int i, c;
char line[MAXLENGTH];
for(i=0; (c = getchar()) != EOF; i++)
line[i] = c;
removec(line, i);
return 0;
}
void removec(char line[], int l)
{
int i;
for(i=0; i < l; i++){
//printf("%c", line[i]);
if(line[i] == '/' && line[i+1] == '/'){
while(i != '\n'){
line[i] = ' ';
++i;
}
}
else if(line[i] == '/' && line[i+1] == '*'){
while((line[i] != '*') && (line[i+1] != '/')){
line[i] = ' ';
++i;
}
}
}
printf("%s", line);
}
【问题讨论】:
-
我认为
++i时没有考虑到限制i < l -
相关问题列表(右侧)有很好的链接;例如,Removing comments and strings
标签: c