Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
1

Переделать ввод с консоли на ввод из файла

24.01.2012, 12:48. Показов 2091. Ответов 17
Метки нет (Все метки)

Здравствуйте! Написала программу, но результат таков: я брала информацию из строки. Мне нужно, чтобы брать информацию из файла, а не из строки. Проверьте, пожалуйста. Заранее спасибо вам!Написать программу, которая считывает во внешний файл текстовую строку и подсчитывает количество пробелов в строке.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
printf ("vvedite tekstovyu stroky\n");
gets(str);
int i=0,pr=0;
FILE *FL;
FL=fopen("text.txt","w");
fprintf(FL,"%s",str);
fclose(FL);
while(i<strlen(str)) {
if(str[i]=' ')pr++;
i++;
}
printf("novaya stroka:");
puts(str);
printf("kolichestvo probelov:%d\n",pr);
getchar();
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2012, 12:48
Ответы с готовыми решениями:

Переделать считывание текста из файла на ввод с клавиатуры
Не получается переделать считывание текста из файла на ввод с клавиатуры. Помогите пожалуйста....

Запрет на ввод символов в консоли
Ввобщем всем привет, хотелось бы чтобы вы мне помогли. Нужно реализовать запрет ввода символов в...

Ввод и вывод данных с консоли
Здравствуйте! Начали изучать программирование в универе, учебник выдали по C#, а лабораторные...

Ввод русского текста из консоли в файл (проблема с кодировкой)
Здравствуйте! Стоит казалось бы тривиальная задача - считать из консоли русский текст, записать...

__________________
17
go
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.01.2012, 13:05 2
Цитата Сообщение от Кэйт Посмотреть сообщение
Написала программу,
Цитата Сообщение от Кэйт Посмотреть сообщение
Мне нужно, чтобы брать информацию из файла,
C
1
freopen("input.txt", "r", stdin);
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 13:24  [ТС] 3
C
1
printf("kolichestvo probelov:%d\n",pr);
после этого
C
1
freopen("input.txt", "r", stdin);
?
0
Заблокирован
Автор FAQ
24.01.2012, 14:02 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
#include<stdio.h>
 
int main()
{
    int i=0,pr=0;
    char str[100] = {0};
    FILE * fWrite = NULL;
    FILE * fRead = fopen("data.txt","r");
    if(!fRead)
        printf("Error open data.txt\n");
    else
    {
        fgets(str,100,fRead);
        fclose(fRead);
        fWrite  =   fopen("text.txt","w");
        if(!fWrite)
            printf("Error open text.txt\n");
        fprintf(fWrite,"%s",str);
        fclose(fWrite);
        while(str[i] != '\0') 
        {
            if(str[i]=' ')
                pr++;
                i++;
        }
        printf("novaya stroka:");
        puts(str);
        printf("kolichestvo probelov:%d\n",pr);
    }
    getchar();
    return 0;
}
Добавлено через 55 секунд
Кэйт, а вам пробелы только считать надо или же удалить из строки???И если это так то новую строку в файл писать или старую???
0
go
Эксперт С++
3643 / 1375 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.01.2012, 14:03 5
C++
1
std::coutn_if(s, s + strlen(s), [](int val) { return val == ' '; }); // Для char *s
0
Заблокирован
Автор FAQ
24.01.2012, 14:04 6
Код ниже делает всё что сказал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
или же удалить из строки???И если это так то новую строку в файл писать или старую???
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
#include <stdio.h>
 
int main()
{
    int i=0,j,pr=0;
    char str[100] = {0};
    FILE * fWrite = NULL;
    FILE * fRead = fopen("data.txt","r");
    if(!fRead)
        printf("Error open data.txt\n");
    else
    {
        fgets(str,100,fRead);
        fclose(fRead);
        fWrite  =   fopen("text.txt","w");
        if(!fWrite)
            printf("Error open text.txt\n");
        else
        {
            while(str[i] != '\0') 
            {
                if(str[i]=' ')
                {
                    for(j = i; str[j + 1] != '\0'; j++)
                        str[j] = str[j + 1];
                    str[j] = '\0';
                    pr++;
                }
                i++;
            }
            printf("novaya stroka:");
            puts(str);
            printf("kolichestvo probelov:%d\n",pr);
            fprintf(fWrite,"%s",str);
            fclose(fWrite);
        }
        
    }
    getchar();
    return 0;
}
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 15:03  [ТС] 7
пробелы только считать надо
0
Заблокирован
Автор FAQ
24.01.2012, 15:05 8
Цитата Сообщение от Кэйт Посмотреть сообщение
пробелы только считать надо
- код из поста 4 это и делает + читает и пишет в файл...
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 16:35  [ТС] 9
Не очень поняла, в файле не показывает информацию на вашем коде. Кажется, что я что то запуталась. Думаю, что мне нужны еще варианты насчет программы. Есть варианты?
0
Заблокирован
Автор FAQ
24.01.2012, 17:42 10
Кэйт, в папке проекта должен быть data.txt который содержит вводимый текст(предположу что в папке забыли файл создать) также заметил недочёт было if(str[i]=' ') это неверно, правильно if(str[i] == ' ') Этот досадный баг устранил ниже
Код здесь
#include<stdio.h>

int main()
{
int i=0,pr=0;
char str[100] = {0};
FILE * fWrite = NULL;
FILE * fRead = fopen("data.txt","r");
if(!fRead)
printf("Error open data.txt\n");
else
{
fgets(str,100,fRead);
fclose(fRead);
fWrite = fopen("text.txt","w");
if(!fWrite)
printf("Error open text.txt\n");
fprintf(fWrite,"%s",str);
fclose(fWrite);
while(str[i] != '\0')
{
if(str[i]==' ')
pr++;
i++;
}
printf("novaya stroka:");
puts(str);
printf("kolichestvo probelov:%d\n",pr);
}
getchar();
return 0;
}

Данный код идёт 100%...
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 17:56  [ТС] 11
да, я пытаюсь вам сказать, что в папке нет data.txt и плюс не считывает количество пробелов.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
24.01.2012, 18:03 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <functional>
#include <cstring>
#include <cctype>
 
int main(){
    const char * s = "bla bla\tbla ";
 
    std::cout << "String: \"" << s << "\" - " << std::count_if(s, s+strlen(s), std::ptr_fun(isspace)) << " space symbols." << std::endl;
 
    return 0;
}
http://liveworkspace.org/code/... 1bcbbd16a4
1
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 18:06  [ТС] 13
easybudda,извините, не понимаю ваш код. Можете перевести ваш код на мой код по Си?
0
Заблокирован
Автор FAQ
24.01.2012, 18:07 14
Цитата Сообщение от Кэйт Посмотреть сообщение
да, я пытаюсь вам сказать, что в папке нет data.txt и плюс не считывает количество пробелов.
- а создать data.txt с текстом наверное непосильная задача???В data.txt будет текст для считывания, когда его считаем тогда и посчитаем число пробелов, вам что программа не пишет Error open data.txt???
А я пытаюсь включить вашу логику - вы считывать из чего то должны?Должны!Я создал файл с названием data.txt ну вбейте сюда fopen("data.txt","r"); своё название файла и расширение и читайте...
0
0 / 0 / 0
Регистрация: 04.10.2011
Сообщений: 67
24.01.2012, 18:19  [ТС] 15
Юра, я поменяла так, что в папке показывает data.txt. От fopen("data.txt","w") далее дале дале до fopena("text.txt","r") Но в data.txt показывает чистый новый лист ни слов...((
0
Заблокирован
Автор FAQ
24.01.2012, 18:31 16
Цитата Сообщение от Кэйт Посмотреть сообщение
От fopen("data.txt","w") далее дале дале до fopena("text.txt","r") Но в data.txt показывает чистый новый лист ни слов...((
- да вы вытерли его когда открывали с ключом "w", заново напишите в нём текст и пишите fopen("data.txt","r")
Студия какая у вас???

Добавлено через 2 минуты

Не по теме:

Думаю только VisualStudio 10 такие грабли может из воздуха делать...

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10912 / 6838 / 1625
Регистрация: 25.07.2009
Сообщений: 12,543
24.01.2012, 18:31 17
Цитата Сообщение от Кэйт Посмотреть сообщение
Можете перевести ваш код на мой код по Си?
Для чтения строки с клавы вот:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <ctype.h>
 
#define STR_LEN 512
#define STR_MASK "%511[^\n]%*c"
 
int spaces_count(const char * s) { return ( *s ) ? !!isspace(*s) + spaces_count(s+1) : 0; }
 
int main(void){
    char s[STR_LEN];
    
    while ( printf("String: ") && scanf(STR_MASK, s) == 1 )
        printf("%d space symbols.\n", spaces_count(s));
    
    return 0;
}
А что там у Вас из файлов читается / в файлы пишется - я что-то так и не понял...
0
Заблокирован
Автор FAQ
24.01.2012, 18:37 18
easybudda, суть банальное чтение из файла и запись прочитанного в другой(даже без изменений).
Кэйт, я что к стене обращаюсь?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Студия какая у вас???
ну не хотите как хотите, разбирайтесь сами...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2012, 18:37

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ввод массива из файла
Добрый вечер. Есть така функция void Entermatrix (int n,double **a,double *b) { int i,j; ...

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

Ввод матрицы из файла
Вылетает ошибка при запуске построенного решения &quot;...expression stream!=null...&quot;...

Что работает быстрее, ввод с консоли или ввод с файла?
вводятся множество списков программа удаляет первое число списка и удаляет все числа в этом списке...


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

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

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