Сравнение символа и строки

tvb

 #include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <conio.h>
# include <stdio.h>
# include <ctype.h>
 
int  main()
{
 int i, j, la, lb, ia,ib, n;
 char ch[]=".,!?;";
 char min, a[80], b[80];
 
//clrscr();
 printf("str A: ");
 gets(a);
 printf("\n");
 printf("str B: ");
 gets(b);
 
 la = strlen(a);
lb = strlen(b);
 
 ia = 0;   ib=0;    
 
 for (i=0; i<strlen(ch); i++)  
        {if (strchr(a, ch[i]) != 0)  
   ia = 1; }
   
   ib=0,   lb=strlen(b);
   
for (i=0; i<=lb-1; i++)
             { for (j=i+1; j<=lb; j++)
        if (b[i] == b[j]) ib = 1; }
 
 
 if ((ia == 1) && (ib == 0)) 
{
   
la=strlen(a);
 i=0;
for (i=0; i<=ib; i++)
    if (a[i]=ch ))      a[i++]=a[i];
    a[i]="\0";
    
     
    }  
  
  
printf("Obrabotannayastroka A: ");
puts(a);
getch();
}
как организовать удаление знаков препинания?
{
   
la=strlen(a);
 i=0;
for (i=0; i<=ib; i++)
    if (a[i]=ch ))      a[i++]=a[i];
    a[i]="\0";
    
     
    }
2 ответа

tvb

как организовать удаление знаков препинания?
#include <ctype.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
 
int main()
{
    wchar_t str[] = L"This. string? contains: a lot! of, puntuation. characters.";
    int i = 0;
    size_t len = wcslen(str);
    setlocale(LC_ALL, "Russian_Russia");
    for (i = len - 1; i > -1; --i)
    {
        if (iswpunct(str[i]))
        {
            wmemmove(str + i, str + i + 1, len - i + 1);
            len--;
        }
    }
 
    wprintf(str);
    putchar('\n');
#if _WIN32
    system("pause");
#endif
    return EXIT_SUCCESS;
}


tvb

// ANSI C 99
 
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <assert.h>
 
#define KILL_CHARS L",.!?-:;"
 
int main(void) {
    wchar_t buf[BUFSIZ];
    
    assert( setlocale(LC_ALL, "ru_RU.UTF-8") );
    
    while ( printf("Строка: ") && fgetws(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        for ( wchar_t * ptr = wcspbrk(buf, KILL_CHARS); ptr; ptr = wcspbrk(ptr, KILL_CHARS) )
            wmemmove(ptr, ptr + 1, wcslen(ptr));
        printf("Без байды: %ls", buf);
    }
    
    return 0;
}