الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حل error ى برنامج c

مغلق
بدأه eng_asa في 15 يوليو 2006 · 7 رد · 616 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لقد قمت بعمل هذا البرنامج ولكن به error بسيط أرجو ان يساعدنى احد فى حله

مع العلم انى استعمل برنامج turboc

وجزاكم الله خيرا

/*simple substituation cipher.*/

#include <ctype.h>

#include <stdio.h>

#include <stdlib.h>

#include"iofile.h"

void code (char *input,char *ouput,char start);

void decode (char *input,char *output,char start);

main()

{

char choice;

printf("\n 1:coding\n 2:decoding\n");

scanf("%c",&choice);

if(choice=='1')

{

char filename[255];

char string[255];

printf("enter the name of file\n");

gets(filename);

printf("enter the text to encode:\n");

gets(string);

createfile(filename,string);

void code(message,cmess,char start);

}

else

{void decode(char *input,char *output,char start);

}

return(0);

}

void code(char *input,char *output,char start)

{

int ch;

FILE *fp1,*fp2;

fp1=fopen(input,"w");

if((fp1=fopen(input,"r"))==NULL) {

printf("cann't open input file\n");

exit(1);

}

if((fp2=fopen(output,"w"))==NULL) {

printf("cannot open output file\n");

exit(1);

}

start=tolower(start);

start=start-'a';

do {

ch=getc(fp1);

ch=tolower(ch);

if(isalpha(ch)){

ch=ch+start;

if(ch>'z') ch=ch-26;

}

putc(ch,fp2);

if (feof(fp1)) break;

} while (!ferror(fp1) && !ferror(fp2));

fclose(fp1);

fclose(fp2);

}

void decode(char *input,char *output, char start)

{

int ch;

FILE *fp1,*fp2;

if((fp1=fopen(input,"r"))==NULL){

printf ("cannot open input file\n");

exit(1);

}

if((fp2=fopen(output,"w"))==NULL){

printf("cannot open output file \n");

exit(1);

}

start=tolower(start) ;

start=start-'a';

do{

ch=getc(fp1);

ch=tolower(ch);

if(isalpha(ch)){

ch=ch-start;

if(ch<'a') ch=ch+26;

}

putc(ch,fp2);

if(feof(fp1)) break;

} while (!ferror(fp1) && !ferror(fp2));

fclose(fp1);

fclose(fp2);

}

#2
/*simple substituation cipher.*/
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include"iofile.h"
void code (char *input,char *ouput,char start);
void decode (char *input,char *output,char start);
main()
{
char choice;
printf("\n 1:coding\n 2:decoding\n");
scanf("%c",&choice);
if(choice=='1')
{
char filename[255];
char string[255];
printf("enter the name of file\n");
gets(filename);
printf("enter the text to encode:\n");
gets(string);
createfile(filename,string);


void code(message,cmess,char start);
}
else
{void decode(char *input,char *output,char start);

}
return(0);
}
void code(char *input,char *output,char start)
{
int ch;
FILE *fp1,*fp2;
fp1=fopen(input,"w");
if((fp1=fopen(input,"r"))==NULL) {
printf("cann't open input file\n");
exit(1);
}
if((fp2=fopen(output,"w"))==NULL) {
printf("cannot open output file\n");
exit(1);
}
start=tolower(start);
start=start-'a';
do {
ch=getc(fp1);
ch=tolower(ch);
if(isalpha(ch)){
ch=ch+start;
if(ch>'z') ch=ch-26;
}
putc(ch,fp2);
if (feof(fp1)) break;
} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

void decode(char *input,char *output, char start)
{
int ch;
FILE *fp1,*fp2;
if((fp1=fopen(input,"r"))==NULL){
printf ("cannot open input file\n");
exit(1);
}
if((fp2=fopen(output,"w"))==NULL){
printf("cannot open output file \n");
exit(1);
}
start=tolower(start);
start=start-'a';
do{
ch=getc(fp1);
ch=tolower(ch);
if(isalpha(ch)){
ch=ch-start;
if(ch<'a') ch=ch+26;
}
putc(ch,fp2);
if(feof(fp1)) break;
} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

لم أجب لكنني نسقت الكود لسهولة النظر اليه..

1-ما هي رسالة الخطأ التي تراها؟

2- لاحظت أنك عامل انكلود لملف iofile.h هل هذا الملف موجود عندك في نفس مكتبة البرنامج؟

ماذا تقصد بهذا السطر:

void code(message,cmess,char start);
}
else
{void decode(char *input,char *output,char start);

الدالة لا يتم استعائها بذكر نوعها.. بل فقط ذكر اسم الدالة وتمرير برامترات اليها.. ما تفعله هنا اشبه بتعريف دالة لا باستدعائها!!

= لا أفول أن هذه هي الآخطاء بل هذا ما لفت انتباهي من نظرة خاطفة ... أعذرني لاستعجالي :)

#3

السلام عليكم

أولا اشكرك على اهتمامك وردك السريع

بالنسبة للملف iofile.h

فقد كانت محاولات لتقسيم الكود ولكنى ضمنتها فى النهاية بالبرنامج لذا بامكانك حذفه

اما برساله الخطأ التى تظهر لى فهى فى السطر الذى اشرت اليه وهو استدعاء code function

ورسالة الخطأ هى(expression syntax in function main)

سيدى ان لم يكن ذلك استدعاء فكيف استدعى ال function التى كتبتها

وقد قمت ذلك بمحاولتان المحاولة الاولى بان ذكرت الدالة كما بنص تعريفها باضبط والمحاولة الثانية بان غيرت اسماء parameters لى اساس انه سيعيدها الى متغيراتها الاصلية كما عرفتها

فهل هذا استدعاء صحيح وان لم يكن فكيف استدعيها ؟

بامكانك ان تنقل الكود بالكامل وتضعه فى اى compiler بعد حذف سطر iofile.h فلا فائدة له

البرنامج كفكرة عامة اننى اريد ان يدخل المستخدم نصا ثم يقوم البرنامج بعمل تشفير له بتشفيت الاحرف (ابدال احرف باخرى) ويعتمد مقدار التشفيت على حرف البداية المعرف ب start داخل الدالة code

شكرا

#4
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

void code (char *input,char *ouput,char start);
void decode (char *input,char *output,char start);

void main()
{
  char choice;
  printf("\n 1:coding\n 2:decoding\n");
  scanf("%c",&choice);
   char filename[255];
   char string [255];
   char start='h';

   printf("enter the name of file\n");
   cin >>filename;
   printf("enter the text to encode:\n");
   gets(string);

  if(choice=='1')
  {
   //createfile(filename,string);
   //code(message,cmess,start);
   code(filename,string,start);
  }
  else
  {decode(filename,string,start);}
  return(0);
}


void code(char *input,char *output,char start)
{
 int ch;
 FILE *fp1,*fp2;
 //fp1=fopen(input,"w");
 if((fp1=fopen(input,"r"))==NULL)
 {
  printf("cann't open input file\n");
  exit(1);
 }
 if((fp2=fopen(output,"w"))==NULL)
 {
  printf("cannot open output file\n");
  exit(1);
 }
 start=tolower(start);
 start=start-'a';
 do 
 {
  ch=getc(fp1);
   if (feof(fp1)) break;
  ch=tolower(ch);
  if(isalpha(ch))
  {
   ch=ch+start;
   if(ch>'z') ch=ch-26;
  }
  putc(ch,fp2);

 } while (!ferror(fp1) && !ferror(fp2));
 fclose(fp1);
 fclose(fp2);
}

void decode(char *input,char *output, char start)
{
 int ch;
 FILE *fp1,*fp2;
 if((fp1=fopen(input,"r"))==NULL)
 {
 printf ("cannot open input file\n");
 exit(1);
 }
 if((fp2=fopen(output,"w"))==NULL)
 {
  printf("cannot open output file \n");
  exit(1);
 }
 start=tolower(start);
 start=start-'a';
 do
 {
  ch=getc(fp1);
  if(feof(fp1)) break;
  ch=tolower(ch);
  if(isalpha(ch))
  {
   ch=ch-start;
   if(ch<'a') ch=ch+26;
  }
  putc(ch,fp2);

 } while (!ferror(fp1) && !ferror(fp2));
 fclose(fp1);
 fclose(fp2);
}

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#5

شكرا على محاولتك مساعدتى ولكن عندما قمت بتطبيق البرنامج ظهر 11ERRROR

انا استخدم برنامج TURBOC بانسبة ل ISOTREAM.H فهو غير موجود

كما انك غيرت FUNCTION للدالة التى اريدها فبالنسبة للدالة CODE اريد ان يكون PARAMETERS لها هو (ملف به النص المطلوب تشفيره ، وملف به النص بعد تشفيره ، الحرف المفترض بدء عملية التشفير به والمفترض ان يقوم المستخدم بادخاله)

هل بامكانك اخبارى معنى ERROR الذى ظهر لى فحسب

expression syntax in function main

وهذا ERROR ايضا

NON PORTABLE POINTER CONVERSION IN FUNCTION

شكرا

#6

أعذرني فانا دائما مستعجل -_-

لا أدري ماذا تريد أن تفعل لكن هذا هو برنامجك:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
void code (char *input,char *ouput,char start);
void decode (char *input,char *output,char start);
main()
{
char choice;
printf("\n 1:coding\n 2:decoding\n");
scanf("%c",&choice);

if(choice=='1')
{
char filename[255];
char string[255];
printf("enter the name of file\n");
gets(filename);
printf("enter the text to encode:\n");
gets(string);
//createfile(filename,string);
code("message","cmess",'5');
}
else
{void decode(char *input,char *output,char start);

}
return(0);
}
void code(char *input,char *output,char start)
{
int ch;
FILE *fp1,*fp2;
fp1=fopen(input,"w");
if((fp1=fopen(input,"r"))==NULL) {
printf("cann't open input file\n");
exit(1);
}
if((fp2=fopen(output,"w"))==NULL) {
printf("cannot open output file\n");
exit(1);
}
start=tolower(start);
start=start-'a';
do {
ch=getc(fp1);
ch=tolower(ch);
if(isalpha(ch)){
ch=ch+start;
if(ch>'z') ch=ch-26;
}
putc(ch,fp2);
if (feof(fp1)) break;
} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

void decode(char *input,char *output, char start)
{
int ch;
FILE *fp1,*fp2;
if((fp1=fopen(input,"r"))==NULL){
printf ("cannot open input file\n");
exit(1);
}
if((fp2=fopen(output,"w"))==NULL){
printf("cannot open output file \n");
exit(1);
}
start=tolower(start);
start=start-'a';
do{
ch=getc(fp1);
ch=tolower(ch);
if(isalpha(ch)){
ch=ch-start;
if(ch<'a') ch=ch+26;
}
putc(ch,fp2);
if(feof(fp1)) break;
} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

الأخطاء التي وحدتها عندك:

ممرت للدالة

 code(message,cmess,'5');

لكنك لم تعرف متغيران بإسم :message و cmess !!!

أنا وضعتها بين علامتي تنصيص " " ليتعامل معها البرنامج على أنها سلاسل نصية وليست أسماء متغيرات.

الدالة

createfile(filename,string);

لا يوجد لها تعريف؟!

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 15 يوليو 2006 في 22:51

#7

السلام عليكم

اسف فلقد عدلت على الكود الماضي على عجل

ان شاء الله هذا راح يزبط معك

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
void code (char *input,char *ouput,char start);
void decode (char *input,char *output,char start);

int main()
{
   //clrscr();
   char choice;
   printf("\n 1:coding\n 2:decoding\n ");
   scanf("%s",&choice);
   char filename[255];
   char tofilename[255];

   int start;
   printf("\nenter the charecter : ");
   scanf("%s",&start);


   printf("enter the name of file you want to %scode it\n",(choice=='1')?"":"de");
   scanf("%s",&filename);
   //gets(tofilename);
   printf("enter the filename for the destenation file:\n");
   //gets(tofilename);
   scanf("%s",&tofilename);

  if(choice=='1')
  {
   code(filename,tofilename,start);
  }
  else
  {
   decode(filename,tofilename,start);
  }
   printf("\n\nPress any key to exit");
   getch();
  return 0;
}

void code(char *input,char *output,char start)
{
int ch;
FILE *fp1,*fp2;
//fp1=fopen(input,"w");
if((fp1=fopen(input,"r"))==NULL)
{
  printf("cann't open input file\n");
  exit(1);
}
if((fp2=fopen(output,"w"))==NULL)
{
  printf("cannot open output file\n");
  exit(1);
}
start=tolower(start);
start=start-'a';
do
{
  ch=getc(fp1);
   if (feof(fp1)) break;
  ch=tolower(ch);
  if(isalpha(ch))
  {
   ch=ch+start;
   if(ch >'z') ch=ch-26;
  }
  putc(ch,fp2);
  printf("%c",ch);
} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

void decode(char *input,char *output, char start)
{
int ch;
FILE *fp1,*fp2;
if((fp1=fopen(input,"r"))==NULL)
{
printf ("cannot open input file\n");
exit(1);
}
if((fp2=fopen(output,"w"))==NULL)
{
  printf("cannot open output file \n");
  exit(1);
}
start=tolower(start);
start=start-'a';
do
{
  ch=getc(fp1);
  if(feof(fp1)) break;
  ch=tolower(ch);
  if(isalpha(ch))
  {
   ch=ch-start;
   if(ch<'a') ch=ch+26;
  }
  putc(ch,fp2);
  printf("%c",ch);

} while (!ferror(fp1) && !ferror(fp2));
fclose(fp1);
fclose(fp2);
}

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#8

السلام عليكم

أولا لكم جزيل الشكر على محاولات مساعدتى

بالنسبة لكود السيد اسماعيل

صحيح انه لم يعد هناك error بعد وضع علامات التنصيص ولكن البرنامج لم يفهم استدعاء ال function (void)

والتى قد فى اخلر البرنامج

هدفى هو ان اتمكن من استدعاء تللك function فى تلك النقطة من البرنامج مع العلم بانه فى تلك function سيقوم المستخدم بنفسه بادخال قيمة start ولن اقوم انا بتحديدها

لم افهم بعد ما مشكلة استدعاء function قمت بصنعها؟؟؟؟

شكرا وجزاكم الله خيرا

هذا الموضوع مغلق.

مواضيع مشابهة