我有一个函数,它的目的是将两个数组中的数字字符和字母“分开”,然后打印它们。
char separa(char arr[MAX_CAR-1]){
char alpha[MAX_CAR];
char num[MAX_CAR];
int schiavo,schiavo2,schiavo3;
int j=0;
int k=0;
int f=0;
int lunghezza =strlen(arr);
for (int i =0;i<lunghezza;i++) {
schiavo = 0;
schiavo2 = -2;
schiavo3 = -2;
schiavo = isalpha(arr[i]);
schiavo2 = isspace(arr[i]);
schiavo3 = isdigit(arr[i]);
if (schiavo != 0 && schiavo2 == 0) {
alpha[j] = arr[i];
j++;
} else if (schiavo3 != 0 && schiavo2 == 0) {
num[k] = arr[i];
k++;
} else if (schiavo2 != 0) {
f++;
}
}
}所以问题是,我应该主要打印那些数组,但是我不知道如何返回它们,我试着阅读关于使用指针的论坛,但是我不知道它是如何为数组工作的
我甚至尝试每次返回一个数组,而不是两个,但是即使这样也没有效果。
发布于 2022-11-27 23:03:42
您可以使用的一种方法是将两个数组初始化:alpha[MAX_CAR]和num[MAX_CAR]作为函数sepera之外的全局变量。要使用这种方法,您可以做的是拥有void separa(char arr[MAX_CAR-1], char alpha[MAX_CAR], char num[MAX_CAR])。这样,您就可以将这些全局变量存储为函数sepera的参数,并且它应该可以工作。一种方法会像这样工作(我还没有测试过这段代码):
在main的某处
char alpha[MAX_CAR]
char num[MAX_CAR]然后编写如下所示的函数:
void separa(char arr[MAX_CAR-1],char alpha[MAX_CAR], char num[MAX_CAR]){
int schiavo,schiavo2,schiavo3;
int j=0;
int k=0;
int f=0;
int lunghezza =strlen(arr);
for (int i =0;i<lunghezza;i++) {
schiavo = 0;
schiavo2 = -2;
schiavo3 = -2;
schiavo = isalpha(arr[i]);
schiavo2 = isspace(arr[i]);
schiavo3 = isdigit(arr[i]);
if (schiavo != 0 && schiavo2 == 0) {
alpha[j] = arr[i];
j++;
} else if (schiavo3 != 0 && schiavo2 == 0) {
num[k] = arr[i];
k++;
} else if (schiavo2 != 0) {
f++;
}
}
}希望这能有所帮助。
https://stackoverflow.com/questions/74594427
复制相似问题