我正在try 用C语言编写一个函数来过滤字符串中的非字母字符.
所以在函数wordFilter
中,我初始化了一个char
数组,以便在那里存储过滤后的字符串,然后将其赋给指针,这样我就可以返回它.
然而,事实证明,每当函数在第一次执行后执行时,char数组"引用"似乎仍然保留上次执行时的值.有没有办法使"引用"数组在每次开始执行函数时都为空.
以下是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
char *wordFilter(char *string) {
char reference[strlen(string)];
int index = 0;
while (*string) {
if (isalpha(*string)) {
reference[index] = *string;
index++;
}
string++;
}
char *ptr = malloc(sizeof(char) * index);
ptr = reference;
return ptr;
}
int main() {
char input[256];
char *ptr = input;
char input2[256];
fgets(input, 256, stdin);
char reference[256];
for (int pos = 0; sscanf(ptr, "%s%n", input2, &pos) == 1; ptr += pos) {
printf("%s ", wordFilter(input2));
}
return 0;
}