Sen diziye yeni bir karakter eklemek istediğin için mecburen boyutunun artması gerekiyor. char input[] = "..." // 32 elemanlı bir dizi sen buna eleman ekleyemezsin. Sadece %'dan sonraki boşluğa ikinci %'i ekleyebilirsin. Bu yüzden std::string ile yapmıştım. Benim bildiğim bu kadar. std::string varken char katarları ile ugrasmıyorum uzun zamandır.
|
string'in nimetleri konusunda hemfikirim ama ben mevcut C ile yazılmış bir kod üzerinde değişiklik yaptığımdan kodu fazla bozmadan (orijinal karakter dizisini değiştirerek) sorunu çözmek istiyorum. Önerdiğin şekilde yapmak sanırım tek çarem. Teşekkürler |
Arkadaşlar graphics.h yükleyip çalıştımak istiyordum. internette graphics.h dosyasını C:\Dev-Cpp\include konumuna, libbgi.a dosyasını ise C:\Dev-Cpp\lib konumuna yapıştırın yazıyordu. Bende Dev-Cpp, Program dosyalrı (x86) /Dev-Cpp dizininde bulunuyor. includede Dev-Cpp/MinGW64 dizinde bulunuyor graphics.h dosyasını oraya attım. libbgi.a dosyasınıda yıne o dzindeki lib dosyasına attm baglayıcılarıda ekledım yanı lınkleri . Fakat program -lbgi bulamıyor. Aşağıdaki hatayı verıyor < Resime gitmek için tıklayın > < Resime gitmek için tıklayın > |
libbgi.a dosyasıhttp://www.uniqueness-template.com/devcpp/libbgi.a bu linkten indirip denesene olacak mı bakalım.(Sağ tık farklı kaydet.) Ayrıca linker kısmını da aşağıdaki ekle. -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 |
hala aynı hatayı verıyor |
Arkadaşlar sefer algan her yönüyle c# kitabında for döngüsü konusunda bir soru sormuş; kullanıcının gireceği byte türünden bir sayının bütün bitlerini ekrana yan yana yazdıracak bir program yazınız diye.(Örn 255 girerse 11111111 şeklinde yazacak)Çözemedim kitabında çözüme baktım ama açıklamamış bu and adlı değişkeni ne için kullanmış anlayan biri açıklayabilir mi?)
|
Mecbur değilsen libgdi kullanma. Çok eski ve sorunlu bir kütüphane. Mis gibi SDL var. |
Uzun yazmış. Onu açıklamaktansa kendim yazıp onu açıklayayım.
Döngünün her adımında sayıyı sıradaki bit en sağa gelecek şekilde sağa öteliyoruz ve 1 ile VE işlemine sokuyoruz. 1 in binary açılımı 0000 0001. Sayıyı 1 ile VE lediğimiz zaman 0 lara karşılık gelen bütün bitler sıfırlanır. 1 e karşılık gelen ise değişmez. Yani sonuç olarak elimizde ya 0 olur ya da 1. |
Anladım hocam teşekkürler.And değişkeni benim kafamı karıştırmıştı sefer alganın örneğinde siz sade ve öz çözünce anladım![]() |
#include <stdio.h> #include <math.h> int main() { int a,b; double hip=a*a+b*b; printf("a yi girin:"); scanf("%d",&a); printf("b yi girin:"); scanf("%d",&b); printf("hipotenus:%f",hip); } soyle basit bir kodu bile calistiramadim ![]() |
|
ya bu hep bu sirayla mi oluyordu ki? neyse tesekkurler hocam |
Evet sırayla oluyor. |
Arkadaşlar ben bir biyografi oluşturma programı yapıyorum. Doğduğunuz yeri girdiğinizde İstanbul ise İstanbul'da, İzmir ise İzmir'de şeklinde ek almalarını istiyorum. 'da ve 'de eki alan illeri yazdım ama 'te ve 'ta eki alan illeri aynı şekilde yazdığımda sorunum düzelmedi. Lütfen yardımlarınızı esirgemeyin. if (textBox3.Text == "Artvin") *Bu şekilde 'da yerine sonu 'de ekiyle bitmesi gereken illeri yazdım (ve oldu.) if (textBox3.Text == "Gaziantep") **Daha sonra 'de yerine 'te eki alması gereken illeri yazdım (ve olmadı.) if (textBox3.Text == "Tokat") ***En sonda da 'te yerine 'ta eki alması gereken illeri yazdım (ve olmadı.) İlk 'de eki alması gereken illeri if ile yaptığımda olmasına rağmen daha sonra 'te ve 'ta eki alması gereken illeri de aynı şekilde yaptığım halde olmamasının sebebi nedir? Lütfen yardım edin. Bu da sorunumun videosu: http://www.screenr.com/bqrH |
C dilinde linkedlist bir yapi olusturarak bir text dosyasindaki verilerin icindeki ilk adresten baslayarak 36 byte giderek ve bunun son 4 byte'ini pointer olarak baska adrese atayarak bu dongu icinde sonunda FFFF gormeyi hedefleyen bir program hazirladim. Fakat text dosyasindaki adresler 011C0730, 011C0890, 011C07F0 gibi sonu sadece sifir ile biten adreslerden olusuyor ve benim programim 011C089C gibi bir adres buldugunda buna gidemeyerek tikaniyor. Cunku 011C0890'dan itibaren C sayisini bulana kadar hexadecimal olarak saymasi gerekiyor ki devam etsin. Bu konuda yardimci olursaniz sevinirim. |
Kodu calistirmak icin text dosyasina ihtiyac var fakat, onceki mesajimi daha anlasilir kilmasi acisindan kodu yolluyorum. [code] #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct datas { char byteAddress[8]; char byteData[8]; struct datas *nextPtr; }datasPtr; datasPtr *first=NULL,*last=NULL, *tempPtr=NULL; int counter=0; char tempArray[9]={0}; int control=0; void add_address(); void list(); void binaryTour(datasPtr *); void octalTour(); int main() { add_address(); binaryTour(first); while(control!=1) { octalTour(tempPtr); binaryTour(tempPtr); } return 0; } void add_address() { datasPtr *new_address; FILE *read; read=fopen("message_buffer.txt","r"); new_address=(datasPtr*)malloc(sizeof(datasPtr)); if(new_address==NULL) { puts("Place isn't Reserved"); exit(0); } while(!feof((read))) { new_address = (datasPtr*)malloc(sizeof(datasPtr)); //yenikayit için yer ayrıldı fscanf(read,"%s",new_address->byteAddress); if(first != NULL)//ilk kayır değilse { last->nextPtr = new_address; last = new_address; last->nextPtr = NULL; } else //ilk kayıt ise { first = new_address; last = first; first->nextPtr = NULL; } } } void binaryTour(datasPtr *address) { datasPtr *binary; binary=(datasPtr*)malloc(sizeof(datasPtr)); binary=first; binary=address; while(binary!=NULL) { if(strlen(binary->byteAddress)==2) { counter++; if(counter>32 && counter<37) { // printf("%s....\n",ikili->byteAdres); strcat(tempArray,binary->byteAddress); } if(counter>=37) { printf("Data Address : %s \n",tempArray); break; } } binary=binary->nextPtr; } counter=0; tempPtr=binary; return; } void octalTour(datasPtr *address) { datasPtr *octal; octal=(datasPtr*)malloc(sizeof(datasPtr)); octal=first; while(octal!=NULL) { if(strlen(octal->byteAddress)==8) { counter++; if(strcmp(octal->byteAddress,tempArray)==0) { printf("At the %d. row the address %s is found.\n",counter,octal->byteAddress); counter=0; if(strcmp(tempArray,"FFFF")==0) { printf("End of File : FF FF FF FF : Address is Found"); control=1; exit(0); } break; } } octal=octal->nextPtr; } tempPtr=octal; memset(tempArray,'\0',9); return; } [\code] |
#include <stdio.h> #include <math.h> int main() { int not1,not2,not3; printf("1.sinav notunuzu girin:"); scanf("%d", not1); printf("2.sinav notunuzu girin:"); scanf("%d", not2); printf("3.sinav notunuzu girin:"); scanf("%d", not3); int top=not1+not2+not3; float ort=(float)top/(float)3; if(ort<45) { printf("sinif tekrari"); } else { printf("gectiniz"); } } bunda nerde hata var acaba? |
scanf("%d",&değişkenAdı); şeklinde kullanılıyodu sanırım |
teşekkürler ama ben string kullanmadan orijinal dizi üzerinde (input) bunu yapmak istiyorum. Yardımcı olabilir misin?
Ayrıca orijnal dizide % yerine %% eklersem çıktıda bu % olarak görünmesine rağmen dizinin büyüklüğü 1 karakter daha artacak mı?
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @-Source-