إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

قراءة جزء محدد من مصفوفة حرفية

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • قراءة جزء محدد من مصفوفة حرفية

    السلام عليكم

    كنت أكتب برنامج يتصل مع sendmail ويرسل إميل ما!
    وبعد ذلك احتجت إلى (رقم) الرسالة

    إذا كان عندي مصفوفة محارف مثلحصلت عليها من التابع recv بعد إرسال الأوامر عن طريق write)

    كود:
    Recived: 220 localhost.localdomain ESMTP Sendmail 8.14.1/8.13.8; Sun, 6 Jan 2008 20:19:38 +0200
    250-localhost.localdomain Hello localhost [127.0.0.1], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH DIGEST-MD5 CRAM-MD5
    250-DELIVERBY
    250 HELP
    250 2.1.0 [email protected]t.localdomain... Sender ok
    250 2.1.5 [email protected] Recipient ok (will queue)
    354 Enter mail, end with "." on a line by itself
    250 2.0.0 m06IJcvR010587 Message accepted for delivery
    (sendmail)
    كيف ممكن خلي متغير يحوي قيمة m06IFAW1008925 ?

    علماً بأنها تتغير في كل مرة أرسل إميل فيها!
    ولغة البرمجة C
    ممكن مساعدة؟
    ومن علم - رحمك الله - أن كلامه من عمله قلَّ إلا فيما ينفعه ومن أيقن أنه مسؤولٌ عما ألف وعما كتب لم يعمل الشيء وضدّه ولم يستفرغ مجهوده في تثبيت الباطل عنده وأنشدني الرِّياشي: ولا تكتب بخطك غير شيء ... يَسرك في القيامة أن تراه. [ابن قتيبة]

  • #2
    كيف ممكن خلي متغير يحوي قيمة m06IFAW1008925 ?
    use sprintf
    كود PHP:
    sprintf(variable "%s"received_serial_number); 
    بالمناسبه وضح كلامك ومش تخاف مش حد حيسرق السورس بتاعك !
    BOOOF , I AM GONE
    Still , you gotta wait for my PRESENT :D
    C programming arabic Tutorial|Programming-fr34ks

    تعليق


    • #3
      [QOUTE]بالمناسبه وضح كلامك ومش تخاف مش حد حيسرق السورس بتاعك ![/QOUTE]

      أحب على ألبي أنكم تاخدوه

      هي الكود
      كود:
      #include <stdio.h>
      #include <stdlib.h>
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <netinet/in.h>
      #include <arpa/inet.h>
      #include <string.h>
      
      #define PORT 25
      #define BUFSIZE 1024
      #define RCPT "rcpt to:[email protected]\n"
      #define DATA "data\n"
      #define SUBJECT "Subject:any\n"
      
      int main(int argc, char **argv)
      {
              int sockfd;
      
              char hostname[128], domainname[128];
              char hello[256]="EHLO ";
              char root[256] = "root";
              char mailfrom[256] = "mail from:";
              char from[256] = "From:";
              char any[256] = "any\n";
      
              int i;
              char buf[BUFSIZE];
      
              struct sockaddr_in addr;
      
              if(gethostname(hostname, 128) == -1){
                      perror("gethostname");
                      exit(-1);
              }
      
              if(getdomainname(domainname, 128) == -1){
                      perror("getdomainname");
                      exit(-1);
              }
      
              strcat(hostname, ".");
              strcat(hostname, domainname);
      
              strcat(hello, hostname);
              strcat(hello, "\n");
      
              strcat(root, "@");
              strcat(root, hostname);
              strcat(root, "\n");
      
              strcat(mailfrom, root);
      
              strcat(from, root);
      
              if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){
                      perror("socket");
                      exit(-1);
              }
      
              addr.sin_family=AF_INET;
              addr.sin_port=htons(PORT);
              addr.sin_addr.s_addr=inet_addr("127.0.0.1");
              memset(&(addr.sin_zero), '\0', 8);
      
              if(connect(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -1){
                    perror("connect");
                      exit(-1);
              }
      
      
              write(sockfd, hello, strlen(hello));
              write(sockfd, mailfrom, strlen(mailfrom));
              write(sockfd, RCPT, strlen(RCPT));
              write(sockfd, DATA, strlen(DATA));
              write(sockfd, SUBJECT, strlen(SUBJECT));
              write(sockfd, from, strlen(from));
              write(sockfd, any, strlen(any));
              write(sockfd, ".\n");
      
              if((i=recv(sockfd, buf,BUFSIZE-1,0)) == -1){
                      perror("recv");
                      exit(-1);
              }
      
              buf[i]='\0';
              printf("Recived: %s", buf);
      
              close(sockfd);
              exit(0);
      }
      بس رقم السيريل نمبر متغير يعني كل مرة شكل وأنا مش حعرفه يعني اعتبر الرسالة يلي وضعتها في بداية الموضوع هي مصفوفة حرفية كيف بدي آخده (اجتزئه)؟ مع أني ما أعرف شو هو ؟
      ومن علم - رحمك الله - أن كلامه من عمله قلَّ إلا فيما ينفعه ومن أيقن أنه مسؤولٌ عما ألف وعما كتب لم يعمل الشيء وضدّه ولم يستفرغ مجهوده في تثبيت الباطل عنده وأنشدني الرِّياشي: ولا تكتب بخطك غير شيء ... يَسرك في القيامة أن تراه. [ابن قتيبة]

      تعليق


      • #4
        220 localhost.localdomain ESMTP Sendmail 8.14.1/8.13.8; Sun, 6 Jan 2008 20:19:38 +0200
        250-localhost.localdomain Hello localhost [127.0.0.1], pleased to meet you
        250-ENHANCEDSTATUSCODES
        250-PIPELINING
        250-8BITMIME
        250-SIZE
        250-DSN
        250-ETRN
        250-AUTH DIGEST-MD5 CRAM-MD5
        250-DELIVERBY
        250 HELP
        250 2.1.0 [email protected]ldomain... Sender ok
        250 2.1.5 [email protected]... Recipient ok (will queue)
        354 Enter mail, end with "." on a line by itself
        250 2.0.0 m06IJcvR010587 Message accepted for delivery

        250 2.0.0 m06IJcvR010587 Message accepted for delivery

        السطر ده بالتحديد يعني ؟ لو السيريال مكانه ثابت تقدر
        يعني لو مكانه دايما بعد رقمين 250 2.0.0 حتي لو الارقام اتغيرت تقدر

        بس حنصحك تستخدم file streams بدل ال character sequence

        مثلا

        كود PHP:
        #include <stdio.h>
        #include <string.h>
        #include <unistd.h>

        int main(void)
        {
                
        char *sr;
                
        int x ;
                
        char a7a[] = "70 70 msffsfs54003 halo halo halo\n";



                
        sr strtok(a7a " " );

                for(
        ++)
                {
                        
        sr strtok(NULL " ");
                }
                
        printf("%s\n",sr);
                return 
        0;

        BOOOF , I AM GONE
        Still , you gotta wait for my PRESENT :D
        C programming arabic Tutorial|Programming-fr34ks

        تعليق


        • #5
          كود PHP:
          #include <stdio.h>
          #include <stdlib.h>
          #include <sys/types.h>
          #include <sys/socket.h>
          #include <netinet/in.h>
          #include <arpa/inet.h>
          #include <string.h>

          #include <unistd.h>
          #include <errno.h>

          #define PORT 25
          #define BUFSIZE 1024
          #define RCPT "rcpt to:[email protected]\n"
          #define DATA "data\n"
          #define SUBJECT "Subject:any\n"

          int main(int argcchar **argv)
          {
          int sockfd;
          FILE *fd_file;
          int x;
          char *serial;
          char hostname[128], domainname[128];
          char hello[256]="EHLO ";
          char root[256] = "root";
          char mailfrom[256] = "mail from:";
          char from[256] = "From:";
          char any[256] = "any\n";

          int i;
          char buf[BUFSIZE];

          struct sockaddr_in addr;

          if(
          gethostname(hostname128) == -1){
          perror("gethostname");
          exit(-
          1);
          }

          if(
          getdomainname(domainname128) == -1){
          perror("getdomainname");
          exit(-
          1);
          }

          strcat(hostname".");
          strcat(hostnamedomainname);

          strcat(hellohostname);
          strcat(hello"\n");

          strcat(root"@");
          strcat(roothostname);
          strcat(root"\n");

          strcat(mailfromroot);

          strcat(fromroot);

          if((
          sockfd socket(AF_INETSOCK_STREAM0)) == -1){
          perror("socket");
          exit(-
          1);
          }

          addr.sin_family=AF_INET;
          addr.sin_port=htons(PORT);
          addr.sin_addr.s_addr=inet_addr("127.0.0.1");
          memset(&(addr.sin_zero), '\0'8);

          if(
          connect(sockfd, (struct sockaddr *)&addrsizeof(struct sockaddr)) == -1){
          perror("connect");
          exit(-
          1);
          }


          write(sockfdhellostrlen(hello));
          write(sockfdmailfromstrlen(mailfrom));
          write(sockfdRCPTstrlen(RCPT));
          write(sockfdDATAstrlen(DATA));
          write(sockfdSUBJECTstrlen(SUBJECT));
          write(sockfdfromstrlen(from));
          write(sockfdanystrlen(any));
          write(sockfd".\n" 4);

                  
          fd_file fdopen(sockfd "rw");

                  if(!
          fd_file)
                          {
                                  
          perror("fdopen");
                                  
          _exit(1);
                          }

          /*------------------------- MODIFICATION ------------------------------*/

          printf("Received\n");
          while(
          fgets(buf BUFSIZE fd_file) != NULL)
          {
                  
          printf("%s",buf);
          }

                  
          serial strtok(buf" " );

                  for(
          ++)
                  {
                          
          serial strtok(NULL " ");
                  }


          /* MODIFICATION END */

          printf("serial number is %s\n",serial);

          fclose(fd_file);

          printf("Program terminated\n");
          exit(
          0);

          comments:

          1- مش حاطط <errno.h> او <unistd.h > علي رغم انك عامل ريفيرينس ليهم
          2- ال indentation مش حلوه نهائي الصراحه الكود وجعلي عيني
          3- ال error report بتاعك ضعيف شويه ! اهتم حبه بيه

          مش حكمل شوف انت بقي
          BOOOF , I AM GONE
          Still , you gotta wait for my PRESENT :D
          C programming arabic Tutorial|Programming-fr34ks

          تعليق


          • #6
            آه صح ممكن أنت تعملها بعد فراغين فعلاً صح
            مشكور

            أنا رح أجربها وإذا كلع معي شي برجع بحطه هون مشكور مرة تانية

            بالمناسبة ال error report هاد مبدأي بس علشان الديبج يعني مش عاوزه يتكلم حاجة بس يعمل logfile
            آسف لأني وجعتلك عيونك وشكراً لأنك راجعته وتعبت فيه
            مشكور
            ومن علم - رحمك الله - أن كلامه من عمله قلَّ إلا فيما ينفعه ومن أيقن أنه مسؤولٌ عما ألف وعما كتب لم يعمل الشيء وضدّه ولم يستفرغ مجهوده في تثبيت الباطل عنده وأنشدني الرِّياشي: ولا تكتب بخطك غير شيء ... يَسرك في القيامة أن تراه. [ابن قتيبة]

            تعليق

            يعمل...
            X