Форум программистов, компьютерный форум CyberForum.ru

размер считываемой строки из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Калькулятор и стек http://www.cyberforum.ru/cpp-beginners/thread980842.html
Решил опробовать себя в С++. В Visual Studio C++ решил сделать мини калькулятор, который выполняет подсчет через стек. Причем парсит скобки дабы в них подсчитать в начале и только потом подсчитать все остальное. Реально реализовать такое? Подскажите, в какую сторону копать в плане стека и регулярки для скобок. Буду очень благодарен!
C++ Сортировка двоичным включением У меня задание продемонстрировать в виде таблицы алгоритм роботы сортировки с двоичным включением на массиве 15,4,10,8,6,9,16,1.Написал программу,н оона раюотает неправильно.В чём ошибка? #include <iostream> #include <conio.h> using namespace std; void main() { int i,j,a,n,l,z,m,S,t,k; cout<<"Input n"; cin>>n; http://www.cyberforum.ru/cpp-beginners/thread980829.html
параллельное программирование C++
Подскажите, пожалуйста! Возвожу положительные числа в степень, а выдается отрицательный результат. Как быть? #include <iostream> #include <stdio.h> #include <stdlib.h> #include <mpi.h> using namespace std;
C++ Рандомизация ответов
Возникли некоторые проблемы, не знаю как сделать рандом ответов в тестирование, да так чтобы не потерять правильный ответ. Буду очень рад примерам.
C++ Что здесь не так? http://www.cyberforum.ru/cpp-beginners/thread980809.html
Только начал изучать С++. Решил написать программу которая гласит что число больше или меньше ста и парное оно или непарное. За код строго не судите(только учусь)! Компилятор-MS Visual C++ Express 2010#include<iostream> #include<math.h> using namespace std; int main() { setlocale(LC_ALL, "russian"); int peremenaya; cin>>peremenaya; int a=peremenaya/2; if (peremenaya<100) {
C++ Не открыть файл! 2 месяца назад все работало... Сейчас при отладке доходит до открытия файла на чтение и вылетает... Права доступа открыл какие только есть... С путями, кажется(?), все нормально... Дайте намек, как разгадать эту загадку. подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
18.10.2013, 15:00     размер считываемой строки из файла
Цитата Сообщение от dzrkot Посмотреть сообщение
file.getline(strArray,n,'\0');
зачем вам третий параметр? Используйте перегруженную версию с двумя параметрами и со взятием строки до '\n'

Добавлено через 1 минуту
Пример работы с массивом строк на С. Считывание идет также до '\n' но со стандартного потока, поменять легко.
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>
 
int compare (const void *, const void *);
int equalChars(char **, const size_t, const char *);
    
int main(void)
{
    char str[256], **words = NULL, **sortWords = NULL, *p = NULL;
    size_t i, len, numWords = 1;
    if (fgets(str, sizeof(str), stdin) == NULL || strlen(str) == 1)
        return 1;
    len = strlen(str);
    str[len - 1] = '\0';
    for (i=0; i < len; i++)
        if (str[i] == ' ')
            numWords++;
    if ((words     = (char **)malloc (sizeof(char *) * numWords)) == NULL ||
        (sortWords = (char **)malloc (sizeof(char *) * numWords)) == NULL)
        return 2;
    i = 0;
    for (p = strtok(str, " "); p != NULL; p = strtok(NULL, " "))
    {
        if ((words[i]     = strdup(p)) == NULL || 
            (sortWords[i] = strdup(p)) == NULL)
            return 3;
        qsort(sortWords[i], strlen(sortWords[i]), sizeof(char), compare);
        i++;
    }
    
    for (i = 0; i < numWords; i++)
        if (equalChars(sortWords, numWords, words[i]))
            printf("%s\n", words[i]);
    
    for (i = 0; i < numWords; i++)
    {
        free(words[i]);
        free(sortWords[i]);
    }
    free(words);
    free(sortWords);
    free(p);
    return 0;
}
 
int compare (const void *a, const void *b)
{
    return *(char *)a - *(char *)b;
}
 
int equalChars(char **words, const size_t num, const char *word)
{
    size_t i, j;
    char *tmp = strdup(word);
    qsort(tmp, strlen(tmp), sizeof(char), compare);
    for (i=0; i < num-1; i++)
        if (strcmp(words[i], tmp) == 0)
            for (j=i+1; j < num; j++)
                if (strcmp(words[j], tmp) == 0)
                {
                    free(tmp);
                    return 1;
                }
    free(tmp);
    return 0;
}
 
Текущее время: 08:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru