Bir fonksiyon parametresine sabit metin nasıl atanır

Başlatan rree, 30 Haziran 2013, 19:57:53

rree


void Fonksiyon( xxxxxx){ 
           Char Metin[30];
            char x;
             strcpy(Metin,xxxxx);
        }

void main()
        Fonksiyon("Merhaba");

    Sabit "merhaba" yazısını fonksiyon içindeki metin dizisini kopyalamak istiyorum

xxxxx yerine nasıl bir tanımlama yapabilirim ccs de bu mümkünmü?

kantirici

void Fonksiyon(const char * s)   
{

}

bu yapı da s pointerı ile veriye ulaşabilirsiniz.

rree

CCS hata veriyor   const char * s  paremetresinde

Gökhan BEKEN

void veri_iste(char alinan[])
{
	char metin[30]="abc";
	strcat(metin,alinan); //alinan değişkenini metin değişkenine ekle
	printf("%s",metin); //çıktı: abcdeneme
}
int main()
{
veri_iste("deneme");
}


mesaj birleştirme:: 01 Temmuz 2013, 01:01:29

Eğer ilk değer vermek istemiyorsanız;
metin değişkenini böyle tanımlayınız:
char metin[30]={0};

böyle tanımlarsanız saçma sonuçlar üretir:
char metin[30];
Özel mesaj okumuyorum, lütfen göndermeyin.

rree

  Verdiğiniz örneği aynen denedim şu hatayı verdi
   
    veri_iste("Merhaba");   derlemedi
         
*** Error 90 "main45K22.c" Line 207(35,36): Attempt to create a pointer to a constant

Gökhan BEKEN

Ben örneği visual c++ ta  hazırladım ccs c de denemedim.
veri_iste("Merhaba");
kısmını
veri_iste((char*)"Merhaba");
şeklinde değiştirip denermisiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.

rree

     Malesef  hata veriyor sanırım ccs nin fonksiyonda sabit değerleri atamayı desteklemiyor  gibi.
   
  Sabit metni alan bir komut var esasında
     puts("Merhaba", Uart_1); 
  Bu komutun açık kaynak kodu olsa bir fikir edineceğim ccs de açık kaynak kodunu bulamdım.

   

Gökhan BEKEN

<stdlib.h> ve <string.h> kütüphanelerini eklemen gerekebilir
bu arada ccs c için bu sayfada örnekler buldum: http://www.cs.bu.edu/teaching/c/string/intro/
void PrintLabel(char the_label[])
{
    printf("Label: %s\n", the_label);
}

...

int main(void)
{
  char label[] = "Single";
  ...
  PrintLabel(label);
  ...
}


void PrintLabel(char the_label[])
{
    printf("Label: %s\n", the_label);
}

OR

void PrintLabel(char *the_label)
{
    printf("Label: %s\n", the_label);
}


Özel mesaj okumuyorum, lütfen göndermeyin.

rree

     
char label[] = "Single";
     

     
   Değişkene sabit veriyi attıktan sonra problem yok.

   Fonksiyona doğrudan sabit veri atadığımızda problem çıkıyor. 
     Örneğin aşağıdaki gibi bir fonksiyon oluşturmak istiyorum.
      DegerAl("Merhaba")   

Gökhan BEKEN

Dediğin işi yapan programı c18 de yazdım gerçek ortamda seri port ile sonucuda gördüm. Kodlar burda:

void veri_iste(rom char *alinan)
{
	char metin[10]={0};
	int i;

	for(i=0;i<10;i++){ //gelen verileri metin değişkenine aktar
		metin[i]=*(alinan+i);
	}

	if(metin[0]=='d' && metin[1]=='e' && metin[2]=='n'){
		PORTA=0xFF; //çalışıp çalışmadığını illa seri port ile görmeye gerek yok eğer ilk 3 harfi den ise a portundaki ledleri yak
	}	

	putsUSART(metin); //sonucu seri port ile yazdırıyoruz. Çıktı: "deneme"
}

int main()
{
	veri_iste("deneme");
}


Not: Burda strcat ve strcpy fonksiyonlarını kullanamadım, çalışmadı yani. Bu yüzden döngü ile kendim aktardım.
Özel mesaj okumuyorum, lütfen göndermeyin.