C言語で余分なスペースをフィルタリングする方法は何ですか?
C言語で余分なスペースをフィルタリングする方法は次の通りです:
- 新しい文字列にフィルタリングされた結果を保存するために、ポインタを使用して文字列を走査します。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void filterSpaces(char *str) {
char *filtered = str; // 用于保存过滤后的字符串
int isSpace = 0; // 标记当前字符是否为空格
// 遍历字符串
while (*str) {
if (isspace(*str)) {
// 如果当前字符为空格
if (!isSpace) {
// 如果前一个字符不是空格,则将当前字符保存到filtered中
*filtered++ = *str;
isSpace = 1; // 设置isSpace为1,表示当前字符为空格
}
} else {
// 如果当前字符不是空格,则将当前字符保存到filtered中
*filtered++ = *str;
isSpace = 0; // 设置isSpace为0,表示当前字符不是空格
}
str++;
}
// 在filtered的末尾添加字符串结束符'\0'
*filtered = '\0';
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]", str);
filterSpaces(str);
printf("过滤后的字符串为:%s\n", str);
return 0;
}
- 元の文字列を指す一つのポインターと、フィルタリングされた文字列を指すもう一つのポインターを使用し、条件に合わない文字は直接スキップします。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void filterSpaces(char *str) {
char *filtered = str; // 用于保存过滤后的字符串
// 遍历字符串
while (*str) {
if (!isspace(*str)) {
// 如果当前字符不是空格,则将当前字符保存到filtered中
*filtered++ = *str;
}
str++;
}
// 在filtered的末尾添加字符串结束符'\0'
*filtered = '\0';
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]", str);
filterSpaces(str);
printf("过滤后的字符串为:%s\n", str);
return 0;
}
上記の2つの方法は、余分な空白を取り除き、結果としてフィルタリングされた文字列が出力されます。