Прошу Вас помочь!!! Не могу понять: почему не вижу результата работы функции. Заранее спасибо! Вывожу на экран значение r, а оно пусто ((( Программа: #include<stdio.h> #include<conio.h> #include<iostream.h> char *asmfunc(char *S, char c) { char *r = 0; L0: asm { mov SI,S; mov DL,c; } L1: asm { mov AL,0; add AL,[SI]; je L3; xor AL,DL; je L2; add SI,1; jmp L1; } L2: asm {mov r,SI;} L3: return r; } void main () { char ss[200], sim, sim1, r; int i; printf ("\n vvedite text s tochkoi: \n"); for (i=0; ((sim=getchar()) !='.'); i++) ss=sim; ss='\0'; //printf ("\n vyvesti ss=%s",ss); printf ("\n vvedite simvol sim="); scanf ("%s",sim1); asmfunc(ss,sim1); printf ("\n r=%c",r); getch (); }
это первая моя лабораторная работа с асемблеровскими вставками на Си. готовая функция была дана в лабораторной работе. необходимо было определить ее действие и вставить ее в Си.
Как мне надоело повторять: учишься ради "корочки" - учись тому, ы чём хоть немного понимаешь. В вузах не дают заданий, которых студент решить не в состоянии, на основе полученного материала. Кури лекции, включай голову. Best regards, your Clear_Energy :3
Ладно Вам, не наезжайте, я ведь прошу помощи. А в лекциях этого нет. Дано на самостоятельное изучение, для ознакомления.
А задание было такое: Дана функция с ассемблеровской вставкой, нужно было определить, что она делает и написать программку на СИ с ее использованием. Как я понял, эта функция ищет вхождение символа в строку. А может я не правильно разобрался. В main я ввожу строку и символ, и отпраляю их в функцию, хочу увидеть результат работы этой функции.
Вы не правы, я не претендую на великого программиста совсем, я только учусь. Не хотите помочь и указать на ошибки, не пишите. Оттачивайте свое перо в других темах. А я буду ждать помощи от тех, кто готов помочь.
Когда функция возвращает значение, это значение записывается в переменную через оператор присвоения: Код (Text): r=asmfunc(...); Но в вашем случае это не скомпилируется, так как есть несоответствие типов: функция возвращает char*, а тип r это char. Надо определить r таким вот образом: Код (Text): char* r; Далее, как снежный ком: теперь printf(...) не будет работать (адрес строки не выводится через %с, а через %s) и его надо изменить: Код (Text): printf ("\n r=%s",r); И последнее: sim1 вводится через %s - опять несоответствие типов. Для ввода только одного символа просто getchar(): Код (Text): sim1=getchar(); Из книг советую самые основы: Керниган и Ричи. P.S. Кстати, что будет если символ не найден? r вернётся как NULL и попадёт в printf(). Некоторые библиотеки C напечатают "NULL", а некоторые нет - и программе конец!
Nachin я и не говорю что вы великий программист и не оттачиваю свое перо я вам указал ошибки но учитывая что вы не знаете не именно чуть чуть а вообще языка программирования должны были побежать сразу же за книгами и учить учить учить как еще говорил дедушка ленин а если хотите что бы за вас сделали вашу лабораторную работу есть раздел коммерц где за деньги вам поможет каждый когда область видимости переменных вообще не соответсвует вашему заданию а область видимости переменных проходят на первом или втором уроке по программированию то вы видитесь мне заядлывам двоешником который не хочет учиться и не будет и помогать такому многие не захотят