Проверка знака пунктуации и проставление пробела за ним - C (СИ)
Формулировка задачи:
здрасьте. Надо ввести переменную которая проверяла бы если есть знак пунктуации то ставить пробел если нет то идти дальше.
#include <stdio.h> #include <ctype.h> int main(){ FILE* f=fopen("1.txt", "wt"); char txt[BUFSIZ]={'\0'}, *a=txt,buf[100]; printf("Vvedite stroky dlya faila:\n>>"); fgets(buf,100,stdin); fputs(buf,f); fclose(f); if((f=fopen("1.txt","rt"))==NULL) {printf("FILE NOT OPEN!\n"); return 0;} while(!feof(f)){ *a=fgetc(f); if(ispunct(*a) && *(a+1)!=' ') *++a=' ';//возвращает ненулевое значение, если аргумент a является знаком пунктуации a++; } *--a='\0'; fclose(f); freopen("2.txt", "w", f); fputs(txt, f); fclose(f); return 0; }
Решение задачи: «Проверка знака пунктуации и проставление пробела за ним»
textual
Листинг программы
#include <stdbool.h> #include <stdio.h> int main() { FILE* input; FILE* output; int c; bool was_punct = false; if( (input = fopen("1.txt", "r")) && (output = fopen("2.txt", "w")) ) { while( (c = fgetc(input)) != EOF ) { if( was_punct ) { if( c != (int)' ' && c != (int)'\n' ) fputc(' ', output); was_punct = false; } else { was_punct = ispunct(c); } fputc(c, output); } fclose(input); fclose(output); } return 0; }