C语言实现识别注释删除注释
时间: 2024-09-15 21:04:17 浏览: 43
在C语言中,识别并删除注释通常涉及到字符串处理和条件判断。有两种常见的注释形式需要处理:行内注释(`//` 开始的单行注释)和块级注释(`/* ... */` 区间内的多行注释)。下面是一个简单的示例,展示了如何用函数的形式去除C风格的单行和多行注释:
```c
#include <stdio.h>
#include <string.h>
void remove_comments(char *str) {
int in_comment = 0; // 标记是否在 /*...*/ 中
int i;
for (i = 0; str[i]; i++) { // 遍历字符串
if (in_comment) { // 如果在多行注释中
if (str[i] == '*' && str[i + 1] == '/') {
in_comment = 0; // 结束多行注释
i++; // 跳过下一个字符
}
} else if (str[i] == '/' && str[i + 1] == '/') { // 单行注释
while (str[i] != '\n') {
i++;
}
} else {
str[i] = str[i]; // 正常字符直接复制
}
}
str[i] = '\0'; // 确保结尾有'\0'
}
int main() {
char input[] = "Hello, // This is a comment\n"
"world! /* And this is a multi-line\n"
"comment */";
remove_comments(input);
printf("Cleaned string: %s\n", input);
return 0;
}
```
这个例子中,`remove_comments` 函数会遍历输入字符串,遇到行内注释时跳过到换行符,遇到 `/*` 开始的多行注释则标记为 `in_comment`,直到遇到 `*/` 结束。
阅读全文