Results 1 to 4 of 4
Hybrid View
-
25th December 2012 12:59 #1Registered User
Join Date: Aug:2008
Location: Ïåòðè÷ & Ñîôèÿ
Posts: 136
Ìàëêî îáÿñíåíèå çà åäíà çàäà÷êà íà C
Çäðàâåéòå è ×åñòèòà Êîëåäà
Èñêàì äà Âè ïîìîëÿ äà ìè îáÿñíèòå çàùî ñúñ çàäà÷êàòà ìè ñòàâà òàêà
À òÿ å: Äà ñå âúâåäå òåêñò îò êëàâèàòóðàòà, êîéòî äà ñå çàïèñâà âúâ ôàéë ñ ðàçøèðåíèå .c (ñ èçáðàíî îò ïîòðåáèòåëÿ èìå). Çàïèñà äà ñå îñúùåñòâè ñèìâîë ïî ñèìâîë, êàòî ñå îñèãóðè âúçìîæíîñò çà èçâåæäàíå íà âúâåäåíèÿ òåêñò âúðõó åêðàíà.
Ñúñ ñàìàòà çàäà÷êà ñúì ãîòîâ, íî íå ìîãà äà ñè îáÿñíÿ ìàëêà ÷àñò îò íåÿ. Çíà÷è ñúõðàíÿâàì èìåòî íà ôàéëà â ìàñèâ îò ñèìâîëè, èìåòî ãî âçèìàì ñ gets(). Ðàçøèðåíèåòî ñúì ãî íàïðàâèë äà ãî ñëàãà àâòîìàòè÷íî êàòî âúðòè åäèí for öèêúë. Ìàñèâà îò ñèìâîëè ñúì ãî íàïðàâèë îò 13 åëåìåíòà, çà äà ìîæå äà èìà 10 åëåìåíòà çà èìåòî íà ôàéëà, äâà çà ðàçøèðåíèåòî (.c) è åäèí çà '\0'.  ïîñëåäñòâèå îáà÷å ñå ïîëó÷àâà, ÷å ìîãà äà äàâàì èìå íà ôàéëà, êîåòî å îò 14 ñèìâîëà + 2 çà ðàçøèðåíèåòî è 1 çà NULL= òîòàë 16, à ìàñèâúò å ñàìî îò 13.
Àêî äàì èìå îò 15 ñèìâîëà, ïðîìåíÿ ðàçøèðåíèåòî ìè íà .d, à âå÷å ñ ïî-ãîëÿìî èìå ñàìàòà ïðîãðàìêà êðàøâà.
Ïîçäðàâè
Åòî è êîäúò ìè:
Code:void TextInput() { FILE *in, *out; int c,i; char name[13]={'\0'}; printf("\nChoose a name for your .c file: "); gets(name); for(i=strlen(name);i=='\0';i--); name[i]='.'; i++; name[i]='c'; i++; name[i]='\0'; printf("\n"); printf("The file %s was successfully created!",(name)); fflush(stdin); in=stdin; out=fopen((name),"w"); if(fopen==NULL) { printf("\nCannot write to file:"); exit(1); } else printf("\nType the program code in the .c file\n\n"); { do { c=fgetc(in); if(feof(in)) break; fputc(c,out); } while(c!=EOF); fclose(out); } }//end of TextInput()
-
25th December 2012 14:58 #2
×åñòíî êàçàíî, íå ñòàâà ÿñíî çàùî ñè ñëîæèë îãðàíè÷åíèå çà äúëæèíàòà íà èìåòî íà ôàéëà îò 12 ñèìâîëà. Íî ïðåäè âñè÷êî îñòàíàëî, áèõ òè ïðåïîðú÷àë äà îãðàäèø áëîêà îò êîä, êîéòî ùå ñå èçïúëíÿâà âúâ for/if, ñúñ ñêîáè, çàùîòî èíà÷å ñòàâàò èíòåðåñíè íåùà, îñîáåíî â C/C++.
UD3R|Q9550+1283|4x2 G.Skill@1066|MX500+1002FAEX+640AAKS+ST31 60|RX580-8GB|1841BLT|SS-760XP|Define7|z24i|Edifier S350DB
geniusloci: ÀÌÄ ñå êóïóâà à) àêî ñè áåäåí; á) àêî ñà òå èçëúãàëè; â) àêî ñè áîëåí ôåí?
nope|r.i.p.
-
25th December 2012 16:02 #3Registered User
Join Date: Aug:2008
Location: Ïåòðè÷ & Ñîôèÿ
Posts: 136
Àìè èäåÿòà ìè áåøå for-úò äà å áåç òÿëî, à äà ñå âúðòè îáðàòíî, êîëêîòî äà ìå "ïðåìåñòè" äî ïîñëåäíèÿ åëåìåíò íà ìàñèâà, êîéòî ñúäúðæà ïîñëåäíèÿ ñèìâîë îò èìåòî è îòòàì äà ñëîæà ðàçøèðåíèåòî. Îáà÷å ñè íàìåðèõ åäíà ãðåøêà - íå òðÿáâà äà å òàêà:
, à òàêà:Code:for(i=strlen(name);i=='\0';i--);
È ñåãà êàòî ãëåäàì ìîæå äà ìèíå è áåç òîÿ öèêúë for. Åòî êàê ãî íàïðàâèõ ñåãà:Code:for(i=strlen(name);name[i]=='\0';i--);
À îòíîñíî ñêîáèòå, äà ïðîáâàë ñúì îò ïúðâà ðúêà, ÷å ñòàâàò ãîëåìè ÷óäåñàCode:printf("\nChoose a name for your .c file: "); gets(name); i=strlen(name); name[i]='.'; i++; name[i]='c'; i++; name[i]='\0'; printf("\n"); printf("The file %s was successfully created!",(name)); fflush(stdin);
, ïðîñòî òóê èäåÿòà ìè áåøå for-úò äà å ïðàçåí. Îãðàíè÷åíèåòî çà äúëæèíàòà â èìåòî ãî ñëîæèõ, çàùîòî íÿìàì èäåÿ êàê ìîæå áåç îãðàíè÷åíèå.  ñìèñúë ùå ñòàíå, àêî íàïðàâÿ ìàñèâúò, êîéòî ñúõðàíÿâà èìåòî ïî-ãîëÿì, íàïðèìåð îò 100 åëåìåíòà. Íî çà äðóã íà÷èí íå ìîãà äà ñå ñåòÿ.
-
25th December 2012 22:55 #4
Íå ñúì ïèñàë íà C, íî àêî ïîòúðñèø äîêóìåíòàöèÿòà íà ôóêöèÿòà gets, ùå âèäèø, ÷å ñå âîäè deprecated, èìåííî çàùîòî å íåñèãóðíà è ìîæå äà ñå ïðåïúëíè ñòðèíãà, â êîéòî ñúõðàíÿâàø âúâåäåíîòî îò ïîòðåáèòåëÿ èìå íà ôàéë. Èëè òðÿáâà äà îãðàíè÷èø íÿêàê ïîòðåáèòåëÿ äà âêàðâà ñàìî ïîçâîëåí áðîé ñèìâîëè, èëè äà ïîëçâàø äðóãà ôóíêöèÿ çà ÷åòåíå îò ñòàíäàðòíèÿ âõîä.
UD3R|Q9550+1283|4x2 G.Skill@1066|MX500+1002FAEX+640AAKS+ST31 60|RX580-8GB|1841BLT|SS-760XP|Define7|z24i|Edifier S350DB
geniusloci: ÀÌÄ ñå êóïóâà à) àêî ñè áåäåí; á) àêî ñà òå èçëúãàëè; â) àêî ñè áîëåí ôåí?
nope|r.i.p.




Reply With Quote
Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè