Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
1

Исключить пробелы, стоящие в начале и в конце каждой строки

14.04.2012, 13:12. Просмотров 1396. Ответов 9
Метки нет (Все метки)

Дан текстовый файл f, состоящий из нескольких строк. Исключить пробелы, стоящие в начале и в конце каждой его строки. Результат поместить в файл f1.

Программа должна быть разбита на несколько функций и обязательно содержать:
1. Функция формирования исходного файла;(с этим я справилась)
2. Функция вывода результата работы программы;
3. Одну или более функций, реализующих вычислительную часть алгоритма.
Основная программа должна содержать только операторы вызова подпрограмм.


не получается написать функцию исклюения пробелов из строки
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2012, 13:12
Ответы с готовыми решениями:

Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся
Дана строка предложение. Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся. ...

Преобразовать матрицу так, чтобы в начале каждой строки были положительные элементы, а в конце отрицательные
Рассчитал матрицу по исходной формуле. Нужно преобразовать матрицу так, чтобы в начале каждой...

В конце каждой строки вставить заданный символ
Написать программу, выполняющую посимвольную обработку текстового файла (табл. 8). Ввод параметров...

Поставить в начале каждой строки (в том числе и пустой) ее порядковый номер
по условию задачи В файле input.txt записан некоторый текст, общая длина которого заранее...

У каждой строки из введенного набора все цифры заменить на пробелы
Разработать функцию Change(const S:string):string, возвращающую строку, в которой все цифры строки...

9
odip
Эксперт С++
7167 / 3225 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
14.04.2012, 16:15 2
C
1
2
3
4
5
6
7
char *str;
char *s, *d;
 
for ( d= s= str; *s != '\0'; s++ ) {
  if ( *s != ' ' ) { *d++= *s; }
}
*d= '\0';
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
14.04.2012, 22:26  [ТС] 3
odip,
если испольщовать эту функкцию то получается вот такой код всей программы и работает программа не правильно исправить так чтобы заработало пока что не получилось :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>  //onn libraries
//#include <stdlib.h>
//#include <time.h>
//#include <iostream.h>
#include <string.h>
 
void output(char *name);
void compare(char *name);
char str[]="qwerty";
 
void output(char *name)
{
FILE *out;
 char q[80];  int i;
  printf("\n");
    printf("______________________");
    printf("\n");
 for(i=0;i<strlen(name);i++)
    printf("%c",name[i]);
   printf("\n");
    printf("______________________");
    printf("\n");
if((out=fopen(name,"r"))!=NULL)
    {
      while(!feof(out))
       {
        fgets(q,81,out);
 
         for(i=0;i<strlen(q);i++)
          printf("%c",q[i]); printf("\n");
 
       }
      printf("\n");
 
    }
else
       printf("Error output!");
 fclose(out);
}
 
 void compare(char *name)
 {
 int N,i;FILE *out,*in;float S; char q[80];
 char *str;
char *s, *d;
 
 
 
 
if((out=fopen(name,"r"))!=NULL)
{
  if((in=fopen("result.txt","w"))!=NULL)
 
 
     {
 
     } for ( d= s= str; *s != '\0'; s++ ) {
  if ( *s != ' ' ) { *d++= *s; }
}
*d= '\0';
}
 
 
else  printf("\nError out!");
 
fclose(out);
 fclose(in); }
 
int main()
{int flag;
do{
 
compare("example.txt");
output("example.txt");
output("result.txt");
 printf("\nInput '0' if you want to exit=>");
scanf("%d",&flag);
} while(flag!=0);
return 1;
}
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
14.04.2012, 23:30 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
char * trimstr(char * str) {
    char * head, * tail;
    
    for ( head = str; *head && isspace(*head); ++head )
        ;
    for ( tail = head + strlen(head); tail > head && isspace(*(--tail)); )
        *tail = '\0';
    
    return head;
}
 
#define INPUT_FILE "in.txt"
#define OUTPUT_FILE "out.txt"
 
int main(void) {
    char buf[BUFSIZ];
    FILE * fin, * fout;
    
    if ( ! ( fin = fopen(INPUT_FILE, "r") ) ) {
        fprintf(stderr, "Can't open file %s for input!\n", INPUT_FILE);
        exit(1);
    }
    if ( ! ( fout = fopen(OUTPUT_FILE, "w") ) ) {
        fprintf(stderr, "Can't open file %s for output!\n", OUTPUT_FILE);
        if ( fclose(fin) )
            fprintf(stderr, "Can't properly close %s!\n", INPUT_FILE);
        exit(1);
    }
    
    while ( fgets(buf, BUFSIZ, fin) ) {
        if ( fprintf(fout, "%s\n", trimstr(buf) ) < 1 ) {
            fprintf(stderr, "Can't write to %s!\n", OUTPUT_FILE);
            if ( fclose(fin) )
                fprintf(stderr, "Can't properly close %s!\n", INPUT_FILE);
            if ( fclose(fout) )
                fprintf(stderr, "Can't properly close %s!\n", OUTPUT_FILE);
            exit(1);
        }
    }
    if ( ferror(fin) ) {
        fprintf(stderr, "Can't read from %s!\n", INPUT_FILE);
        if ( fclose(fin) )
            fprintf(stderr, "Can't properly close %s!\n", INPUT_FILE);
        if ( fclose(fout) )
            fprintf(stderr, "Can't properly close %s!\n", OUTPUT_FILE);
        exit(1);
    }
    
    if ( fclose(fin) ) {
        fprintf(stderr, "Can't properly close %s!\n", INPUT_FILE);
        if ( fclose(fout) )
            fprintf(stderr, "Can't properly close %s!\n", OUTPUT_FILE);
        exit(1);
    }
    
    if ( fclose(fout) ) {
        fprintf(stderr, "Can't properly close %s!\n", OUTPUT_FILE);
        exit(1);
    }
    
    fprintf(stderr, "Done.\n");
    exit(0);
}
0
14.04.2012, 23:30
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
15.04.2012, 00:16  [ТС] 5
easybudda, а вы не могли бы прокомментировать код?
а то не особо понятно
да и не работает он еще
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
15.04.2012, 00:52 6
Цитата Сообщение от лизи Посмотреть сообщение
да и не работает он еще
Да ну?!
Исключить пробелы, стоящие в начале и в конце каждой строки

Что-то не так делаете...
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
15.04.2012, 12:21  [ТС] 7
easybudda, а вы не могли бы все равно прокоментировать код
чтобы я могла понять что вы делаете?
а вот кстати результат работы программы
Исключить пробелы, стоящие в начале и в конце каждой строки
0
Nameless One
Эксперт С++
5793 / 3442 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
15.04.2012, 12:37 8
лизи, положи файл in.txt с исходными строками в папку с исполняемым файлом.
0
лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
15.04.2012, 12:43  [ТС] 9
Nameless One, ,блин точно спасибо) я забыла изменить название у файла)
0
Nameless One
Эксперт С++
5793 / 3442 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
15.04.2012, 13:06 10
Еще так можно:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char* strip(char* str, const char* chars)
{
    static const char* whitespace = " \t\n";
    char *pbeg, *pend;
    
    if(chars == NULL)
        chars = whitespace;
    
    pbeg = str + strspn(str, whitespace);
    pend = memchr(str, '\0', -1); /* лучше использовать расширение gnu rawmemchr */
    
    while(pend != pbeg && strchr(chars, *(pend - 1)) != NULL)
        --pend;
 
    *pend = '\0';
    return pbeg;
}
 
#define SIZE 256
 
int main(void)
{
    char buf[SIZE];
    
    puts("Input lines (EOF to quit):");
    
    while(fgets(buf, SIZE, stdin) != NULL)
    {
        printf("Got line:\n%s\n", buf);
        printf("Stripped:\n%s\n\n", strip(buf, NULL));
    }
    
    if(ferror(stdin))
    {
        fputs("Input error\n", stderr);
        exit(1);
    }
    
    exit(0);
}
0
15.04.2012, 13:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 13:06

Получить текст, в котором в конце каждой строки из заданного файла добавлен восклицательный знак
Доброго времени суток. Нужна помощь с двумя задачками. Сами задания прикрепляю..С меня плюс..

Удалить повторяющиеся пробелы, также пробелы в начале и в конце строки (ассемблерная вставка)
Написать ассемблерную вставку, реализующую следующую обработку строки: согласно варианту. Оформить...

Удалить пробелы в начале и конце строки
Удалить группу пробелов, с которых, возможно начинается и заканчивается строка строки читаются из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru