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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2012, 22:45   #1
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию определить длину строки, ерунду пишет

помогите правильно определить длину строки, у меня пишет все время одно и то же отрицательное число -858993664
Код:
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;


int  main(void)
{
	FILE *f;
	char load_string[50] = "none";
	int score=1;
	string s;
	string slovo;
	int number=0;

	cout << "Vvedite slovo poiska: \n";
	scanf("%s",&slovo);
 
	f=fopen("fff.txt", "r");
	if (f== 0){printf("File not found");}
	while (!feof(f)){	  
	  fscanf(f,"%s",s);
	  int l=s.length();	  
	  /*
	  if(s[l-1]==char(".")||s[l-1]==char("!")||s[l-1]==char("?")||s[l-1]==char(",")){
		  if (slovo.compare(s.substr(0,l-2))==0) number=score;
	  }else{
		  if (slovo.compare(s)==0) number=score;
	  }
	  if(s[l-1]==char(".")||s[l-1]==char("!")||s[l-1]==char("?"))score++;*/
	  printf("%s  %d  \n",s,l);
	}
	fclose(f);
	_getch();
}
Музыкант вне форума Ответить с цитированием
Старый 11.11.2012, 23:52   #2
Axrik
Форумчанин
 
Аватар для Axrik
 
Регистрация: 17.12.2011
Сообщений: 111
По умолчанию

Попробуйте функцией
Код:
strlen(const char* String)
Возвращает длину строки.
Axrik вне форума Ответить с цитированием
Старый 12.11.2012, 00:41   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Нельзя std::string читать всякими scanf'ами. Вы или крестик снимите и используйте сишные строки, или читайте стринги с помощью потоков.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 12.11.2012, 01:25   #4
arcus
Новичок
Джуниор
 
Регистрация: 11.11.2012
Сообщений: 2
По умолчанию

Длина строки? Это же просто!
Код:
int k = 0;
for ( int i = 0; s[i] != NULL; i++)
{
k++;
}
length = k++;
arcus вне форума Ответить с цитированием
Старый 12.11.2012, 08:25   #5
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Цитата:
Длина строки? Это же просто!
Только в том случае если размер занимаемый символом в памяти одинаков для всех символов в строке.
Kostia вне форума Ответить с цитированием
Старый 12.11.2012, 15:29   #6
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(void)
{
   ifstream fp("data.txt");
   if(! fp.is_open())
       return 1;

   string s;
   while(getline(fp, s, '\n') != 0) {
        cout << s.length() << endl;
   }
   fp.close();
   return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 12.11.2012, 19:04   #7
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Нельзя std::string читать всякими scanf'ами. Вы или крестик снимите и используйте сишные строки, или читайте стринги с помощью потоков.
да вроде считывает строку то нормально, и выводит нормально, только вот длину неправильно определяет
Музыкант вне форума Ответить с цитированием
Старый 12.11.2012, 19:06   #8
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию

Цитата:
Сообщение от arcus Посмотреть сообщение
Длина строки? Это же просто!
Код:
int k = 0;
for ( int i = 0; s[i] != NULL; i++)
{
k++;
}
length = k++;
можно и чай в ложке кипятить, только неудобно
Музыкант вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить длину самого короткого слова Павел Шилин Паскаль, Turbo Pascal, PascalABC.NET 2 03.10.2012 00:36
Ввести фамилию, имя и отчество как одно данное строкового типа. Определить длину строки и количество букв "а" в ней. Вывести им layl Паскаль, Turbo Pascal, PascalABC.NET 2 03.05.2012 19:11
Определить длину листа. snowfrost Microsoft Office Excel 6 02.06.2011 11:42
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
как определить длину мп3? Дима я Мультимедиа в Delphi 6 19.08.2009 19:44