Ц Програмирање

Програмирање поређења низова Ц

Програмирање поређења низова Ц
Низ у језику Ц је низ знакова који се завршава нулом (\ 0). Коришћење овог својства упоређују се низови.

Две жице се могу упоређивати на разне начине. У овом упутству ћемо прво видети кориснички дефинисану функцију за упоређивање два низа, а затим ћемо видети неке уграђене функције библиотеке које се могу користити за врло лако упоређивање два низа. Па, кренимо.

Поређење низа помоћу кориснички дефинисане функције:

Написаћемо функцију стрингЦомпаре () да упоредимо низове. Прелазимо низовима и упоређујемо сваки знак низа док не дођемо до краја било којег или обојица или се пронађе један неусклађени. Ако се прелазак досегне до краја обе жице, тада се жице подударају; у супротном, низови се не подударају.

01. / * усерДефинедФунцтион.ц * /
02.
03. #инцлуде
04.
05. инт стрингЦомпаре (цхар стр1 [], цхар стр2 [])
06.
07. инт и = 0;
08.
09. док (стр1 [и] == стр2 [и])
10.
11. иф (стр1 [и] == '\ 0' || стр2 [и] == '\ 0')
12. пауза;
13. и ++;
14.
15.
16. иф (стр1 [и] == '\ 0' && стр2 [и] == '\ 0')
17. ретурн 0;
18. иначе
19. ретурн -1;
20.
21.
22.
23.
24. инт маин ()
25.
26. цхар стр1 [30], стр2 [30];
27.
28. принтф ("Унесите први низ:");
29. сцанф ("% [^ \ н]% * ц", стр1);
30. принтф ("Унесите други низ:");
31. сцанф ("% [^ \ н]% * ц", стр2);
32.
33. иф (стрингЦомпаре (стр1, стр2) == 0)
34. принтф ("Низови су једнаки \ н");
35. иначе
36. принтф ("Низови нису једнаки \ н");
37.
38. ретурн 0; 39.

Овде прелазимо низовима користећи вхиле петљу и променљиву и. Када су знакови једнаки у истом положају оба низа, вредност и се увећава за 1 (ред 13). Ако знакови нису једнаки (ред 09) или стигнемо до краја низа (ред 11), тада је лооп петља прекид. Након вхиле петље, проверавамо да ли су оба потеза низа достигнута до краја или не (ред 16). Ако се прелазак досегне до краја обе жице, тада су низови једнаки, иначе не.

Поређење низа помоћу уграђених функција библиотеке:

Следеће функције библиотеке могу се користити за поређење низова. Све функције су декларисане у низ.х датотека заглавља.

функција стрцмп ():

Ова функција упоређује два низа прослеђена функцији.

Синтакса:

инт стрцмп (цонст цхар * стр1, цонст цхар * стр2)

Повратна вредност: Врати 0 ако су низови једнаки. Врати негативан цео број ако је АСЦИИ вредност првог неусклађеног карактера првог низа мања од другог низа. Врати позитиван цели број ако је АСЦИИ вредност првог неусклађеног карактера првог низа већа од другог низа. Неки системи враћају разлику АСЦИИ вредности првог неусклађеног карактера, а неки системи враћају -1 ако је АСЦИИ вредност првог неусаглашеног карактера првог низа мања од другог низа, а враћају 1 ако је АСЦИИ вредност првог неусклађеног карактера први низ је већи од другог низа.

Пример Повратна вредност Објашњење
стрцмп ( „Здраво свете“, „Здраво свете“ ) 0 Две жице су исте.
стрцмп ( „Здраво“, „Здраво \ 0 Свет“ ) 0 Низови се упоређују до знака '\ 0'. Први низ по дефаулту се завршава са „\ 0“, а други низ садржи знак „\ 0“ иза „Здраво“.
стрцмп ( „Здраво \ 0 \ 0 \ 0", „Здраво \ 0 Свет" ) 0 Низови се упоређују до знака '\ 0'.
стрцмп ( „Здраво свете“, „здраво свете“ ) Негативни цели број АСЦИИ вредност првог неусклађеног карактера првог низа ('Х') мања је од другог низа ('х')
стрцмп („Здраво свете“, „здраво свете“ ) Позитиван цео број АСЦИИ вредност првог неусклађеног карактера првог низа ('х') већа је од другог низа ('Х')

функција стрнцмп ():

Ова функција је слична функцији стрцмп (), али овде морамо да одредимо колико бајтова се упоређује прослеђивањем додатног аргумента функцији.

Синтакса:

инт стрнцмп (цонст цхар * стр1, цонст цхар * стр2, сизе_т н)

Повратна вредност: Функција се враћа 0 ако први н знакови две жице су једнаки; у супротном, враћа негативан или позитиван цео број, у зависности од предзнака разлике између АСЦИИ вредности првог неусклађеног знака.

Пример Повратна вредност Објашњење
стрнцмп ( „Хелло Ворлд“, „Хелло Ворлд“, 5 ) 0 Првих 5 знакова је исто.
стрнцмп ( „Здраво“, „Здраво \ 0 Свету“, 5 ) 0 Првих 5 знакова је исто.
стрнцмп ( „Здраво \ 0 \ 0 \ 0", „Здраво \ 0 Свет", 8 ) 0 '\ 0' је након првих 5 знакова у обе жице. Дакле, поређење се зауставља након 5, а не 8.
стрнцмп ( „Хелло Ворлд“, „хелло Ворлд“, 5 ) Негативни цели број АСЦИИ вредност првог неусклађеног карактера првог низа ('Х') мања је од другог низа ('х')

функција стрцасецмп ():

Ова функција је слична функцији стрцмп (), али овде низови не разликују велика и мала слова.

Синтакса:

инт стрцасецмп (цонст цхар * стр1, цонст цхар * стр2)

Повратна вредност: Исто као стрцмп (), али се низови третирају као неосетљив случај.

Пример Повратна вредност Објашњење
стрцасецмп ( „Здраво свете“, „Здраво свете“ ) 0 Две жице су исте.
стрцасецмп ( „Здраво“, „Здраво \ 0 Свет“ ) 0 Низови се упоређују до знака '\ 0'. Први низ по дефаулту се завршава са „\ 0“, а други низ садржи знак „\ 0“ иза „Здраво“.
стрцасецмп ( „Здраво свете“, „здраво свете“ ) 0 Жице су неосетљив случај. Дакле, „Хелло Ворлд“ и „хелло Ворлд“ су исто.

функција стрнцасецмп ():

Ова функција је слична функцији стрнцмп (), али овде низови не разликују велика и мала слова.

Синтакса:

инт стрнцасецмп (цонст цхар * стр1, цонст цхар * стр2)

Повратна вредност: Исто као стрнцмп (), када се низови третирају као велика и мала слова.

Пример Повратна вредност Објашњење
стрнцасецмп ( „Здраво, свет“, „Здраво, свет“, 5 ) 0 Првих 5 знакова је исто.
стрнцасецмп ( „Здраво“, „Здраво \ 0 Свету“, 5 ) 0 Првих 5 знакова је исто.
стрнцасецмп ( „Здраво \ 0 \ 0 \ 0", „Здраво \ 0 Свет", 8 ) 0 '\ 0' је након првих 5 знакова у обе жице. Дакле, поређење се зауставља након 5, а не 8.
стрнцасецмп ( „Здраво свете“, „здраво свете“, 5 ) 0 Жице су неосетљив случај. Дакле, „Здраво“ и „здраво“ су исто.

функција мемцмп ():

Ова функција упоређује два бајта по бајт меморијских блокова. Морамо проћи два показивача меморијских блокова и број бајтова за упоређивање.

Синтакса:

инт мемцмп (цонст воид * стр1, цонст воид * стр2, сизе_т н)

Повратна вредност: Функција враћа 0 ако су два меморијска блока (н бајтова) су једнаки; у супротном, враћа разлике између првог неусклађеног пара бајтова (бајтови се тумаче као непотписани цхар објекти, а затим промовишу у инт).

Пример Повратна вредност Објашњење
мемцмп ( „Здраво, свет“, „Здраво, свет“, 5 ) 0 Првих 5 знакова је исто.
мемцмп ( „Здраво \ 0 \ 0 \ 0", „Здраво \ 0 Свет", 8 ) Негативни цели број Првих 6 знакова је исто, али 7. знак је различит. Овде поређење није престало као стрнцмп () при добијању знака '\ 0'.
мемцмп ( „Здраво свете“, „здраво свете“, 11 ) Негативни цели број АСЦИИ вредност првог неусклађеног карактера првог низа ('Х') мања је од другог низа ('х')

Пример:

Следи пример Ц кода свих дискутованих функција.

01. / * стрингЦомпаре.ц * /
02.
03. #инцлуде
04. #инцлуде
05.
06. инт маин ()
07.
08. принтф ("стрцмп (" Хелло Ворлд "," Хелло Ворлд ") =>% д \ н", стрцмп ("Хелло Ворлд", "Хелло Ворлд"));
09. принтф ("стрцмп (" Хелло "," Хелло \\ 0 Ворлд ") =>% д \ н", стрцмп ("Хелло", "Хелло \ 0 Ворлд"));
10. принтф ("стрцмп (" Хелло Ворлд "," хелло Ворлд ") =>% д \ н", стрцмп ("Хелло Ворлд", "хелло Ворлд"));
11. принтф ("стрцмп (" Здраво \\ 0 \\ 0 \\ 0 "," Здраво \\ 0 Свијет ") =>% д \ н", стрцмп ("Здраво \ 0 \ 0 \ 0", "Здраво \ 0 Свет "));
12.
13. принтф ("\ н --------------- \ н");
14.
15. принтф ("стрнцмп (" Хелло Ворлд "," Хелло Ворлд ", 5) =>% д \ н", стрнцмп ("Хелло Ворлд", "Хелло Ворлд", 5));
16. принтф ("стрнцмп (" Хелло "," Хелло \\ 0 Ворлд ", 5) =>% д \ н", стрнцмп ("Хелло", "Хелло \ 0 Ворлд", 5));
17. принтф ("стрнцмп (" Здраво \\ 0 \\ 0 \\ 0 "," Здраво \\ 0 Свијет ", 8) =>% д \ н", стрнцмп ("Здраво \ 0 \ 0 \ 0", "Здраво \ 0 Свет ", 8));
18. принтф ("стрнцмп (" Хелло Ворлд "," хелло Ворлд ", 5) =>% д \ н", стрнцмп ("Хелло Ворлд", "хелло Ворлд", 5));
19.
20. принтф ("\ н --------------- \ н");
21.
22. принтф ("стрцасецмп (" Хелло Ворлд "," Хелло Ворлд ") =>% д \ н", стрцасецмп ("Хелло Ворлд", "Хелло Ворлд"));
23. принтф ("стрцасецмп (" Хелло "," Хелло \\ 0 Ворлд ") =>% д \ н", стрцасецмп ("Хелло", "Хелло \ 0 Ворлд"));
24. принтф ("стрцасецмп (" Хелло Ворлд "," хелло Ворлд ") =>% д \ н", стрцасецмп ("Хелло Ворлд", "хелло Ворлд"));
25.
26. принтф ("\ н --------------- \ н");
27.
28. принтф ("стрнцасецмп (" Хелло Ворлд "," Хелло Ворлд ", 5) =>% д \ н", стрнцасецмп ("Хелло Ворлд", "Хелло Ворлд", 5));
29. принтф ("стрнцасецмп (" Хелло "," Хелло \\ 0 Ворлд ", 5) =>% д \ н", стрнцасецмп ("Хелло", "Хелло \ 0 Ворлд", 5));
30. принтф ("стрнцасецмп (" Здраво \\ 0 \\ 0 \\ 0 "," Здраво \\ 0 Свијет ", 8) =>% д \ н", стрнцасецмп ("Здраво \ 0 \ 0 \ 0", "Здраво \ 0 Свет ", 8));
31. принтф ("стрнцасецмп (" Хелло Ворлд "," хелло Ворлд ", 5) =>% д \ н", стрнцасецмп ("Хелло Ворлд", "хелло Ворлд", 5));
32.
33. принтф ("\ н --------------- \ н");
34.
35. принтф ("мемцмп (" Хелло Ворлд "," Хелло Ворлд ", 5) =>% д \ н", мемцмп ("Хелло Ворлд", "Хелло Ворлд", 5));
36. принтф ("мемцмп (" Здраво \\ 0 \\ 0 \\ 0 "," Здраво \\ 0 Свијет ", 8) =>% д \ н", мемцмп ("Здраво \ 0 \ 0 \ 0", "Здраво \ 0 Свет ", 8));
37. принтф ("мемцмп (" Хелло Ворлд "," хелло Ворлд ", 11) =>% д \ н", мемцмп ("Хелло Ворлд", "хелло Ворлд", 11));
38.
39. ретурн 0; 40.

Закључак:

Дакле, у овом упутству смо видели како се низови могу упоређивати на разне начине. Као што смо видјели, функција стрингЦомпаре () враћа -1 за неједнаке низове, али ово се може измијенити тако да враћа АСЦИИ вриједност неусклађеног карактера. Можете га користити у свом коду, који вам највише одговара.

Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...
Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...
Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...