Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2014, 20:53   #1
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
Вопрос Чтение текстового файла(С)

Помогите пожалуйста.
Я написал программу на С#, тут все получилось. Как написать ету же программу на С, пробую, не получаеться.


Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int counter = 0;
            string line;

            // Read the file and display it line by line.
            System.IO.StreamReader file =
                new System.IO.StreamReader(@"D:\tabulka.txt");
            while ((line = file.ReadLine()) != null)
            {
                System.Console.WriteLine(line);
                counter++;
            }

            file.Close();
            System.Console.WriteLine("There were {0} lines.", counter);
            // Suspend the screen.
            System.Console.ReadLine();
        }
    }
}
C@rbon вне форума Ответить с цитированием
Старый 18.10.2014, 14:43   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Показывай как пробуешь
eoln вне форума Ответить с цитированием
Старый 18.10.2014, 17:34   #3
Demius
Пользователь
 
Регистрация: 03.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от C@rbon Посмотреть сообщение
Помогите пожалуйста.
Я написал программу на С#, тут все получилось. Как написать ету же программу на С, пробую, не получаеться.


Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int counter = 0;
            string line;

            // Read the file and display it line by line.
            System.IO.StreamReader file =
                new System.IO.StreamReader(@"D:\tabulka.txt");
            while ((line = file.ReadLine()) != null)
            {
                System.Console.WriteLine(line);
                counter++;
            }

            file.Close();
            System.Console.WriteLine("There were {0} lines.", counter);
            // Suspend the screen.
            System.Console.ReadLine();
        }
    }
}
В Си есть функция перенаправления потока ввода/вывода/ошибок, выглядит она так:
Код:
freopen ("D:\tabulka.txt", "r", stdin);
А читать строку до символа перевода можно с помощью функции gets(str). Когда мы достигаем конца строки, функция возвращает нулевой указатель.
Demius вне форума Ответить с цитированием
Старый 18.10.2014, 18:00   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Я написал программу на С#, тут все получилось. Как написать ету же программу на С
Переход с C# на C, на мой взгляд, слишком грубый. Может на C++?

Код:
#include <string>
#include <fstream>
#include <iostream>

int main()
{
    std::fstream fs;
    fs.open( "test.txt", std::fstream::in | std::fstream::out | std::fstream::app );

    std::string line;
    int counter = 0;
    while( std::getline( fs, line ) ) {
        std::cout << line << std::endl;
        counter++;
    }
    fs.close();

    std::cout << "There were " << counter << " lines." << std::endl;

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 18.10.2014, 21:33   #5
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Спасибо всем. Посидел, разобрался. Но вот другая проблема, почему у меня ошыбку на етой строке выдает?
Код:
if ((file = fopen("D:/tabulka.txt", "r")) == NULL)
смог исправить только етим:
Код:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Вот весь код
Код:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif


#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>


int main()
{

	char name[30];
	FILE *file;

	if ((file = fopen("D:/tabulka.txt", "r")) == NULL)
		printf("Cant open\n");
	else{
		for (;;){
			if (feof(file))
				break;
			fscanf(file, "%s", name);
			printf("%s\n", name);
		}
		
	}

	

	fclose(file);
	return 0;

}

Последний раз редактировалось C@rbon; 18.10.2014 в 21:45.
C@rbon вне форума Ответить с цитированием
Старый 18.10.2014, 22:49   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Но вот другая проблема, почему у меня ошыбку на етой строке выдает?
Не ОШИБКУ, а ВАРНИНГ. Их следует различать. Выдает, потому майкрософт решила упростить разработчикам жизнь (чтоб не пиняли все ошибки на винду) и написали более безопасные версии некоторых функции...
p51x вне форума Ответить с цитированием
Старый 18.10.2014, 22:55   #7
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Не ОШИБКУ, а ВАРНИНГ.
Именно что ошибка:
Error 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


А кроме добавления етого можно еще как то исправить?
Код:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
C@rbon вне форума Ответить с цитированием
Старый 18.10.2014, 23:30   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Именно что ошибка:
Error 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


в 2013 студии по-умолчанию настройки такие, что использование устаревших и небезопасных функций считается ошибкой
Rififi вне форума Ответить с цитированием
Старый 18.10.2014, 23:41   #9
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Ясно. Спасибо.
C@rbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из текстового файла demiancz Общие вопросы Delphi 4 03.11.2012 20:36
Чтение из текстового файла soirkar Visual C++ 6 22.06.2011 16:58
чтение с текстового файла salwator Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2011 15:49
чтение текстового файла Аглан Microsoft Office Access 2 15.02.2011 22:14
Чтение текстового файла Kasper1 Общие вопросы по Java, Java SE, Kotlin 5 17.12.2010 15:57