gpt4 book ai didi

c - K&R 练习 1-23 删除评论

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:23 25 4
gpt4 key购买 nike

我坚持这个练习。我不明白为什么下面的代码没有得到想要的结果。
该程序应该删除评论。在这个程序中,我不考虑字符串和/或字 rune 字。此外,出于测试目的,我在需要删除的点处放置了空格而不是 NULL。

这里有两个测试:

测试/* test123 ok 测试 */
生成到:
测试 * test123 ok 测试 */

没有//work
生成到:
不正常

此外,如果输入太大,我会出现段错误

#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);
}

最佳答案

第一段代码有错别字:

        while(i != '\n'){

应该是

        while(line[i] != '\n'){

第二段代码逻辑有点不对:

        while((line[i] != '*') && (line[i+1] != '/')){

正确的逻辑可以通过多种方式正确表达;尝试用以下形式重写它:

        while (!(blah blah blah)) {

哪里blah blah blah是您要检查的条件。

另请注意,如果注释未终止(例如 // 后没有换行符),您的代码将尝试读取输入文件末尾以外的数据(导致错误输出或崩溃)。要解决此问题,请添加检查 i < l while 中的所有条件循环。

关于c - K&R 练习 1-23 删除评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18041510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com