gpt4 book ai didi

从先前数组的子集创建新数组

转载 作者:行者123 更新时间:2023-11-30 16:32:56 24 4
gpt4 key购买 nike

我有一个这样的字符数组:

    #define SIZE 4096
char array[SIZE];
fgets(array, SIZE, stdin);

我想删除任何标点符号,例如 ('),以便数组元素为:

不要那样做

相对于

不要那样做

我将如何创建一个不包含标点符号的新数组?

最佳答案

只需复制新数组,避免使用标点符号,并在输出数组的末尾添加一个 null 终止符:

int main() 
{
char punctuation[] = { '.', '?', '!', ':', ';',
'-', '(', ')', '[', ']',
',', '"', '/'};

char input[SIZE], output[SIZE];
int i, j, k, ch, flag;

i = j = k = flag = 0;

/* get the input string from the user */
printf("Enter your input string:");
fgets(input, SIZE, stdin);
input[strlen(input) - 1] = '\0';

/* copy characters other than punctuations */
while (input[i] != '\0')
{
flag = 0;
ch = input[i];

for (j = 0; j < sizeof(punctuation); j++)
{
if (ch == punctuation[j])
{
flag = 1;
break;
}
}

if (!flag)
{
output[k++] = input[i];
}

i++;
}

output[k] = '\0';

/* print the resultant string */
printf("Resultant String: %s\n", output);
return 0;
}

您可以根据您的要求增加/减少标点数组大小。默认 C 语言环境将这些字符分类为标点符号:

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

C 语言中还有一个默认函数 ispunct:

int main()
{
int i;
printf("All punctuation characters in C"
" programming are: \n");
for (i = 0; i <= 255; ++i)
if (ispunct(i) != 0)
printf("%c ", i);
return 0;
}

关于从先前数组的子集创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49917488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com