Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416

Аналог команды strcpy в С#

19.10.2013, 21:34. Показов 6970. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код на С#:

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
class Program
    {// Вывести на экран красным цветом ту строку, где наименьшее число пробелов.
        static void Main(string[] args)
        {
            int i;
            byte count = 0, min=100;
            string line;
            using (StreamReader sr = new StreamReader("text.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    i = 0;
                    while (i < line.Length)
                    {
                        while ((i < line.Length) && !(char.IsWhiteSpace(line, i)))
                        {
                            i++;
                        }
                        count = 0;
                        for (i=0; i < line.Length ; i++)
                            if ((line[i])==' ')
                        count++;
                        if (count < min)
                        {
                            min = count;
                           
                        }}}
                Console.ForegroundColor = ConsoleColor.Red; 
                Console.WriteLine("Искомая строка: ", min);
                Console.ReadLine();
            }
        }
    }
}
Необходимо после этой строки: min = count;
вставить вот это: strcpy(min, line)

Но так как в си шарп нет такой команды (strcpy) как выйти из данной ситуации? Есть ли аналог это команды С++ в си шарп?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2013, 21:34
Ответы с готовыми решениями:

Аналог функции strcpy
myStrlen был дан как пример в книге, а свой myStrcpy неполучается написать:pardon: int myStrlen(char *str1); char myStrcpy(char *b,...

Нужен рекурсивный аналог функции strcpy
Мне надо сделать аналогию функции strcpy рекурсией. int strcpy_r(char* s1,char* s2) { ... } На ЧИСТОМ Си. Заранее спасибо! ...

Аналог strcpy, memmove но только для бинарних файловых типов fstream
Есть ли функциям аналог strcpy, memmove но только для бинарных файловых типов fstream. Например, надо вставить данные в определенную...

16
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 21:37
Alex7676,
C#
1
2
string a = "abcd";
string b = a; // strcpy(a,b);
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 21:41  [ТС]
Psilon

Честно говоря, я не очень понял, что как вы это сделали
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 21:42
Alex7676, строки присваиваются не по ссылке, а по значению. Вместо strcpy пользуйтесь обычным присваиванием. Вы же не используете intcpy для присваиваний целых чисел? Вы просто пишете
C++
1
2
int x = 5;
int y = x;
вместо
C++
1
2
3
int x = 5;
int y;
intcpy(x,y);
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 21:47  [ТС]
Psilon
А, понял теперь. Но проблема в том, что строки вводятся не вручную, а берутся из текстового файла (.txt). То есть не я присваиваю значение искомой переменной, а она сама в процессе выполнения программы присваивает её.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 21:50
Alex7676, и в чем разница?
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 21:52  [ТС]
Psilon

Не знаю
Вы написали:
string a = "abcd";
string b = a; // strcpy(a,b);

Что вот это: string a = "abcd";
в моём коде?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 22:00
Alex7676, вот как ваша задача решается на C#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.IO;
using System.Linq;
 
namespace ConsoleApplication26
{
    class Program
    {
        static void Main()
        {
            string[] file = File.ReadAllLines("text.txt");
            var enumerable = file.Select(str => new {Value = str, Spaces = str.Count(c => c == ' ')}).ToArray();
            var min = enumerable.Min(arg => arg.Spaces);
            foreach (var x in enumerable)
            {
                Console.ForegroundColor = x.Spaces == min ? ConsoleColor.Red : ConsoleColor.White;
                Console.WriteLine(x.Value);
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 44 секунды
Alex7676,
Что вот это: string a = "abcd";
в моём коде?
считать из файла, вестимо.
1
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 22:06  [ТС]
Psilon
Спасибо за код!
Но мне бы свой хотелось доработать. То есть по моей программе вот так:

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
class Program
    {// Вывести на экран красным цветом ту строку, где наименьшее число пробелов.
        static void Main(string[] args)
        {
            int i;
            byte count = 0, min=100;
            string line;
            using (StreamReader sr = new StreamReader("text.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    i = 0;
                    while (i < line.Length)
                    {
                        while ((i < line.Length) && !(char.IsWhiteSpace(line, i)))
                        {
                            i++;
                        }
                        count = 0;
                        for (i=0; i < line.Length ; i++)
                            if ((line[i])==' ')
                        count++;
                        if (count < min)
                        {
                            min = count;
                            string min = "text.txt";
                            string line = min;
                        }}}
                Console.ForegroundColor = ConsoleColor.Red; 
                Console.WriteLine("Искомая строка: ", min);
                Console.ReadLine();
            }
        }
    }
}
Вот эта часть :
min = count;
string min = "text.txt";
string line = min;

Не компилируется (
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 22:47
Alex7676, приучайте себя говорить, что именно не работает, то есть что за ошибка...

а почему не работает, да очень просто: у вас две переменных одинаково называются. При этом вам компилятор даже говорит об этом.А вы его не слушаете.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 22:49  [ТС]
Psilon
А как это исправить в моем варианте кода? При этом внести минимум изменений, только необходимых для работоспособности.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 22:51
Alex7676, я вам помогал, пока считал, что вы не понимаете код. А вы не понимаете программирование. Подумайте сами, пожалуйста. Это не так трудно, как кажется.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 22:53  [ТС]
Psilon

Попытаюсь осилить. Хотя 4-ый час уже сижу над этой ошибкой...
Спасибо за помощь)
0
369 / 341 / 108
Регистрация: 12.02.2013
Сообщений: 653
19.10.2013, 22:59
Цитата Сообщение от Alex7676 Посмотреть сообщение
Хотя 4-ый час уже сижу над этой ошибкой...
Зачем мучиться то?
Вам же хороший код написали...
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 23:13  [ТС]
Diman777
Я не спорю, что он хороший.
Мне свой охото доработать

Добавлено через 5 минут
Эх, я не знаю как ...

Добавлено через 1 минуту
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
class Program
    {// Вывести на экран красным цветом ту строку, где наименьшее число пробелов.
        static void Main(string[] args)
        {
            int i;
            byte count = 0, min=100;
            string line;
            string line_min;
            using (StreamReader sr = new StreamReader("text.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    i = 0;
                    while (i < line.Length)
                    {
                        while ((i < line.Length) && !(char.IsWhiteSpace(line, i)))
                        {
                            i++;
                        }
                        count = 0;
                        for (i=0; i < line.Length ; i++)
                            if ((line[i])==' ')
                        count++;
                        if (count < min)
                        {
                            min = count;
                            line_min = "text.txt";
                            line = line_min;
                            
                        }}}
                Console.ForegroundColor = ConsoleColor.Red; 
                Console.WriteLine("Искомая строка: ", line);
                Console.ReadLine();
            }
        }
    }
Добавлено через 27 секунд
Все равно не работает...
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.10.2013, 23:15
ну примерно так:
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
class Program
    {
        static void Main()
        {
            int i;
            int min = int.MaxValue;
            string minline = string.Empty;
            using (StreamReader sr = new StreamReader("text.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    i = 0;
                    while (i < line.Length)
                    {
                        while ((i < line.Length) && !(char.IsWhiteSpace(line, i)))
                        {
                            i++;
                        }
                        byte count = 0;
                        for (i = 0; i < line.Length; i++)
                            if ((line[i]) == ' ')
                                count++;
                        if (count < min)
                        {
                            min = count;
                            minline = line;
                        }
                    }
                }
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Искомая строка: {0}", minline);
                Console.ReadLine();
        }
    }
 
 
}
хотя тут тоже есть косяки: например, он выводит только одну строку, хотя в файле может быть несколько строк одинаковой длины.
1
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 416
19.10.2013, 23:22  [ТС]
Psilon
Вот я косяк...

C#
1
2
 min = count;
minline = line;
В этом основная загвоздка и была
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2013, 23:22
Помогаю со студенческими работами здесь

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

Аналог команды ps aux
Скрипты в оболочке bash. Написать скрипт-аналог команды ps aux В скрипте реализовать опцию --sort для сортировки по списку: UID -...

Аналог команды file
Так уж получилось, что мне в лабе выпал сложный вариант, по крайней мере для меня, а звучит он так: разработайте собственный аналог...

Аналог команды из Windows
Всем доброго вечера! Столкнулся с проблемой , что не знаю аналога команды start /wait из Windows в Linux! Кто знает помогите, срочно нужно)...

Аналог команды Windows TREE
На входе: каталог. На выходе: дерево каталогов, начиная от указанного. Параметр командной строки -f включает режим отображения еще и файлов.


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru