ameximes
26/09/2005, 06:00
Merhabalar,
Bir GNU/Linux ve C çaylağı olarak elimden geldiğince lafı dolandırmadan sormaya çalışayım.
getch() ve clrsrc() fonksiyonları (ve elbette daha bir çok başka fonksiyonu da) barındıran başlık dosyası nedir? Elimdeki dökümanda örnek kod içerisinde conio.h dosyası kullanılmış, gcc "böyle bir dosya yok git burdan" dediğinde google'ı ve forumun aramalarını deşerek ulaşabildiğim sonuçlar, conio.h'daki kimi fonksiyonların curses.h'de tanımlı olduğundan söz ediliyordu ancak gcc curses.h'nin de sistemde olmadığını söylüyor. Search for Files v2.6 ile şöyle bir taradığımda "getch" ifadesi stdio.h'de görünüyor diyor ama o da yeterli gelmiyor. Dökümanda anlatılan her fonksiyon için "standarttır", "standart değil ama bir çok derleyicide var" gibi açıklamalar var ama getch için bir şey dememiş. Bu iki fonksiyon yapıları itibariyle muhakkak standarttır gibi geliyor bana ama bilemiyorum.
Şu kodda;
#include <stdio.h>
#include ŞÜPHELİ BAŞLIK
#include <string.h>
char *mystrstr(char *s1, char *s2);
int main()
{
char s1[100];
char s2[100];
char *ptr;
clrscr();
printf("aramanın yapılacağı yazıyı girin : ");
gets(s1);
printf("aranacak yazıyı girin :");
gets(s2);
ptr = mystrstr(s1, s2);
if (ptr)
puts(ptr);
else
puts("aradığınız yazı bulunamadı\n");
getch();
}
char *mystrstr(char *s1, char *s2)
{
int i, j;
int lens1, lens2;
lens1 = strlen(s1);
lens2 = strlen(s2);
for (i = 0; lens1 - i >= lens2; ++i, ++s1) {
for (j = 0; s1[j] == s2[j]; ++j)
if (s2[j + 1] == '\0')
return s1;
}
return NULL;
}
ŞÜPHELİ BAŞLIK yerine conio.h ya da curses.h denediğimde dosya bulunamadı; o satırı kaldırdığımda ise aşağıdaki hatayı alıyorum.
tga@ubuntu:~/c$ gcc mystr.c -o mystr
/tmp/ccCa9aQ0.o(.text+0x29): `main' İşlevinde:
: warning: the `gets' function is dangerous and should not be used.
/tmp/ccCa9aQ0.o(.text+0x11): `main' İşlevinde:
: undefined reference to `clrscr'
/tmp/ccCa9aQ0.o(.text+0x87): `main' İşlevinde:
: undefined reference to `getch'
collect2: ld çıkış durumu 1 ile döndü
Bu arada okunaiblirliği artsın diye c kodunu php diyerek renklendirerek eşşeklik etmedim umarım. Saat itibariyle de kafam durmuş gibi, eğer beceriksizce laflar ettiysem affola. Son olarak ne zaman "gets()" fonksiyonunu kullansam gcc korkuyor bundan, sebebini de sormak istedim. İlgi ve alakanız için çok teşekkür ederim.
Ek çıktılar:
tga@ubuntu:~/c$ gcc -v
Özellikler /usr/lib/gcc-lib/x86_64-linux/3.3.5/specs'den okunuyor
../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc --disable-multilib x86_64-linux
seçenekleriyle yapılandırıldı.
Evre modeli: posix
gcc 3.3.5 (Debian 1:3.3.5-8ubuntu2) sürümü
AMD64 üzerinde Ubuntu AMD64 Hoary kullanıyorum.
Bir GNU/Linux ve C çaylağı olarak elimden geldiğince lafı dolandırmadan sormaya çalışayım.
getch() ve clrsrc() fonksiyonları (ve elbette daha bir çok başka fonksiyonu da) barındıran başlık dosyası nedir? Elimdeki dökümanda örnek kod içerisinde conio.h dosyası kullanılmış, gcc "böyle bir dosya yok git burdan" dediğinde google'ı ve forumun aramalarını deşerek ulaşabildiğim sonuçlar, conio.h'daki kimi fonksiyonların curses.h'de tanımlı olduğundan söz ediliyordu ancak gcc curses.h'nin de sistemde olmadığını söylüyor. Search for Files v2.6 ile şöyle bir taradığımda "getch" ifadesi stdio.h'de görünüyor diyor ama o da yeterli gelmiyor. Dökümanda anlatılan her fonksiyon için "standarttır", "standart değil ama bir çok derleyicide var" gibi açıklamalar var ama getch için bir şey dememiş. Bu iki fonksiyon yapıları itibariyle muhakkak standarttır gibi geliyor bana ama bilemiyorum.
Şu kodda;
#include <stdio.h>
#include ŞÜPHELİ BAŞLIK
#include <string.h>
char *mystrstr(char *s1, char *s2);
int main()
{
char s1[100];
char s2[100];
char *ptr;
clrscr();
printf("aramanın yapılacağı yazıyı girin : ");
gets(s1);
printf("aranacak yazıyı girin :");
gets(s2);
ptr = mystrstr(s1, s2);
if (ptr)
puts(ptr);
else
puts("aradığınız yazı bulunamadı\n");
getch();
}
char *mystrstr(char *s1, char *s2)
{
int i, j;
int lens1, lens2;
lens1 = strlen(s1);
lens2 = strlen(s2);
for (i = 0; lens1 - i >= lens2; ++i, ++s1) {
for (j = 0; s1[j] == s2[j]; ++j)
if (s2[j + 1] == '\0')
return s1;
}
return NULL;
}
ŞÜPHELİ BAŞLIK yerine conio.h ya da curses.h denediğimde dosya bulunamadı; o satırı kaldırdığımda ise aşağıdaki hatayı alıyorum.
tga@ubuntu:~/c$ gcc mystr.c -o mystr
/tmp/ccCa9aQ0.o(.text+0x29): `main' İşlevinde:
: warning: the `gets' function is dangerous and should not be used.
/tmp/ccCa9aQ0.o(.text+0x11): `main' İşlevinde:
: undefined reference to `clrscr'
/tmp/ccCa9aQ0.o(.text+0x87): `main' İşlevinde:
: undefined reference to `getch'
collect2: ld çıkış durumu 1 ile döndü
Bu arada okunaiblirliği artsın diye c kodunu php diyerek renklendirerek eşşeklik etmedim umarım. Saat itibariyle de kafam durmuş gibi, eğer beceriksizce laflar ettiysem affola. Son olarak ne zaman "gets()" fonksiyonunu kullansam gcc korkuyor bundan, sebebini de sormak istedim. İlgi ve alakanız için çok teşekkür ederim.
Ek çıktılar:
tga@ubuntu:~/c$ gcc -v
Özellikler /usr/lib/gcc-lib/x86_64-linux/3.3.5/specs'den okunuyor
../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc --disable-multilib x86_64-linux
seçenekleriyle yapılandırıldı.
Evre modeli: posix
gcc 3.3.5 (Debian 1:3.3.5-8ubuntu2) sürümü
AMD64 üzerinde Ubuntu AMD64 Hoary kullanıyorum.