作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的字符数组:
#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/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!