如何简洁高效地消除 C 语言输出中的空格83


在 C 语言编程中,有时需要去除字符串或输出中的多余空格。以下是一些简洁有效的技术,可帮助您消除空格,使输出更简洁美观。

1. 使用 fgets() 函数

fgets() 函数从流读取一行,包括换行符。通过设置最大宽度为所需的字符数(不包括换行符),可以有效去除行尾多余的空格。以下示例演示了如何使用 fgets() 去除多余空格:```c
#include
int main() {
char name[20];
printf("Enter your name: ");
fgets(name, 20, stdin);

// 去除行尾空格
int len = strlen(name);
while (len > 0 && name[len - 1] == ' ') {
len--;
}
name[len] = '\0'; // 添加字符串结束符

printf("Your name without spaces: %s", name);
return 0;
}
```

2. 使用 isspace() 函数

isspace() 函数检查一个字符是否为空格、制表符或换行符。通过遍历字符串并使用 isspace() 过滤空格,可以轻松删除多余的空格。以下示例展示了如何使用 isspace() 去除多余空格:```c
#include
#include // 包含 isspace() 定义
int main() {
char name[] = "John Doe ";

// 遍历字符串
int i = 0;
while (name[i] != '\0') {
// 如果当前字符为空格,则跳过
if (isspace(name[i])) {
i++;
continue;
}

// 否则,将当前字符复制到输出字符串
putchar(name[i++]);
}

printf("");
return 0;
}
```

3. 使用 strtok() 函数

strtok() 函数将字符串分解为由分隔符分隔的令牌。通过使用空格作为分隔符,可以分割字符串并忽略多余的空格。以下示例演示了如何使用 strtok() 去除多余空格:```c
#include
#include // 包含 strtok() 定义
int main() {
char name[] = "John Doe ";
char *token;

// 使用空格作为分隔符分割字符串
token = strtok(name, " ");

// 遍历令牌
while (token != NULL) {
printf("%s ", token);
token = strtok(NULL, " "); // 获取下一个令牌
}

printf("");
return 0;
}
```

4. 使用正则表达式

正则表达式是一种强大的工具,可用于查找和替换字符串中的模式。通过使用正则表达式,可以轻松地移除字符串中的多余空格。以下示例展示了如何使用正则表达式去除多余空格:```c
#include
#include // 包含正则表达式相关的头文件
int main() {
char name[] = " John Doe ";
regex_t regex;
int reti;
char *pattern = "[ ]+"; // 匹配一个或多个空格
char *replacement = " "; // 替换为单个空格

// 编译正则表达式
regcomp(®ex, pattern, REG_EXTENDED);

// 执行正则表达式替换
reti = regexec(®ex, name, 0, NULL, 0);
if (!reti) {
regreplace(®ex, name, strlen(name), 0, replacement, strlen(replacement));
}

printf("%s", name); // 输出替换后的字符串

// 释放正则表达式
regfree(®ex);
return 0;
}
```

通过使用上述技术,您可以轻松高效地从 C 语言输出中消除多余空格。这将使您的程序输出更加简洁美观,提高用户体验。

2024-11-15


上一篇:C语言开方函数详解

下一篇:C 语言结构体函数:定义、使用和示例