Bir C kodunda bu hatayı alıyorum. Baktığım kadarı ile kod kaynaklı bir hata yok. Bu hatayı ya Türkçe karakter kullanınca ya da kod içinde yanlış yazımdan kaynaklanıyor. İki kere karşılaşmıştım ama çözmüştüm. Biri dosyada Türkçe karakter olması diğeri ise "main" yerine "maiin" yazmamdı. Ama bunu çözemedim. Dosya adını değiştirdim ama işe yaramadı. Siz de bir bakar mısınız?
#include <stdlib.h>
#include <stdio.h>
// struct asd{...}; yerine
// typedef struct{...}asd; yazmaya alışmalısın. Özellikle header dosyalarında struct tanımlayınca işine yarayacak.
typedef struct
{
char makam[30];
float maas;
int calistigiSene;
} calisanBilgi;
typedef struct
{
char ad[30];
char soyad[30];
int yas;
calisanBilgi bilgi;
}calisanlar;
void elemanBilgiGoster(calisanlar* x) //Burada pointer kullanma sebebim ise, fonksiyona verilen struct'ın bir kopyasını daha oluşturup bellek alanı kaplamamak. Bunun yerine referans da alabilirsin.
{
//UYARI: Fonksiyon parametresindeki pointer'a verdiğin veriyi silmeyi deneme. Tabii eğer malloc() ile oluşturduğun pointer'a ait nesneyi veriyorsan ve o nesneyi bir daha kullamayacaksan silebilirsin. Aksi halde kodun hata verir.
printf("%s %s %d %s %f %d\n", x->ad, x->soyad, x->yas, x->bilgi.makam, x->bilgi.maas, x->bilgi.calistigiSene);
}
int main()
{
calisanlar *calisanlarTamami = NULL; //Burada pointer kullanma sebebim dinamik olarak esneyebilen dizi tanımlamak. Kullanıcının gireceği kadar belleği ayırır.
int eklenecekEleman;
printf("Lutfen eklenecek eleman sayisini giriniz.\n");
scanf("%d", &eklenecekEleman); //scanf() fonksiyonunda referans kullan, böylece değişkenin olduğu adresteki veriye erişilebilecek ve değişkenin verisi fonksiyondan değiştirilebilecektir.
calisanlarTamami = malloc(eklenecekEleman*sizeof(calisanlar)); //Bellek allokasyonu (memory allocation -> malloc() [veya calloc(), senin tarzına bağlı.]). Fonksiyonu nasıl kullandığıma dikkat et.
for (int i = 0; i < eklenecekEleman; i++)
{
printf("%d. elemani giriniz.\n", i + 1);
scanf("%s %s %d %s %f %d", &calisanlarTamami[i].ad, &calisanlarTamami[i].soyad, &calisanlarTamami[i].yas, &calisanlarTamami[i].bilgi.makam, &calisanlarTamami[i].bilgi.maas, &calisanlarTamami[i].bilgi.calistigiSene);
//scanf'ten \n ibaresini kaldırdım. Çünkü öyle olunca \n'den bir önceki formatta bir karakter daha ister.
}
printf("Kaydedilen eleman bilgileri;\n");
for (int i = 0; i < eklenecekEleman; i++)
{
elemanBilgiGoster(&calisanlarTamami[i]);
}
free(calisanlarTamami); //Bellek alanını temizledim. Bunu unutma, yoksa kodunda açık bırakırsın.
return 0;
}
Yeni Projede;
[CODE title="launch.json"]{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Etkin dosyayı derle ve dosyada hata ayıkla",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "gdb için düzgün yazdırmayı etkinleştir",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe etkin dosyayı derle"
}
]
}[/CODE]
[CODE title="tasks.json"]{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe etkin dosyayı derle",
"command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Hata Ayıklayıcısı tarafından oluşturulan görev."
}
],
"version": "2.0.0"
}[/CODE]
İlk hata aldığımda ise;
[CODE title="launch.json"]{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
Yeni Projede;
[CODE title="launch.json"]{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Etkin dosyayı derle ve dosyada hata ayıkla",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "gdb için düzgün yazdırmayı etkinleştir",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe etkin dosyayı derle"
}
]
}[/CODE]
[CODE title="tasks.json"]{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe etkin dosyayı derle",
"command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Hata Ayıklayıcısı tarafından oluşturulan görev."
}
],
"version": "2.0.0"
}[/CODE]
İlk hata aldığımda ise;
[CODE title="launch.json"]{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
Evet hatanın kaynağını buldum. Online bir Compiler üzerinden de denedim ve sorun 10. satırdaki struct calisanBilgi bilgi;'den kaynaklanıyor. Ama nasıl çözeceğimi ben de bilmiyorum