Предполагается, что моя программа берет фразу, разделяет все слова и печатает их в новой строке без каких-либо ',', '(' или ')'.Это мой кодПока что это работает, но я хотел бы улучшить его, если это возможно.Кроме того, я не знаю, является ли это проблемой или нет, но, похоже, она удаляет «(» и «)» из одного слова, но не из обоих.Таким образом, «(тест» или «тест)» будет выводить только «тест», как и предполагалось, но «(тест)» выводит «тест)».Не уверен, что это нормально или нет .. как я могу это улучшить?
#include <stdio.h>
#include <string.h>
void function(char *string)
{
const char delim[2] = " ";
char *token;
int n, i, j;
token = strtok(string, delim);
while (token != NULL) {
n = strlen(token);
if (strstr(token, ",")) {
for (i = j = 0; i < n; i++) {
if (token[i] != ',')
token[j++] = token[i];
}
token[j] = '\0';
}else if (strstr(token, "(")) {
for (i = j = 0; i < n; i++) {
if (token[i] != '(')
token[j++] = token[i];
}
token[j] = '\0';
} else if (strstr(token, ")")) {
for (i = j = 0; i < n; i++) {
if (token[i] != ')')
token[j++] = token[i];
}
token[j] = '\0';
}
printf("%s\n", token);
token = strtok(NULL, delim);
}
}
int main(void)
{
char test[80] = "The next appointment is on the 7.1.2019, 10:00 a.m., in HS 1 (Building C)";
char input[80];
gets(input);
function(test);
function(input);
return 0;
}