ถามเกี่ยวกับโค้ตภาษาซี

เรื่องมีอยู่ว่าเจ้าของกระทู้ได้ลองทำโจทย์เกี่ยวกับภาษาซี แล้วผลที่ได้ไม่ตรงกับโจทย์ที่ต้องการ ข้อนี้เป็นข้อที่ยากสำหรับเจ้าของกระทู้พอสมควรเพราะเพิ่งหัดเขียนด้วย ช่วยดูโค้ตว่าผิดตรงไหน ต้องแก้แบบไหน แล้วแก้อย่างไร
โดยโจทย์เกี่ยวกับเรื่องการ substring โจทย์มีอยู่ว่า

          ให้ผู้ใช้ป้อนรับตัวอักษร ความยาวไม่เกิน 128 ตัวอักษร และรับ ตัวอักษรมาหนึ่งอักขระ รับตัวเลขที่ต้องการจะให้ substring
โดยผลการรันที่ต้องได้คือ
Enter: Hello World
from: e
len : 3
: llo

โดยมีเงื่อนไขว่า หากอักขระที่ป้อนไม่ปรากฎในคำที่เราป้อนเข้าไป ให้ return ค่า เป็น NULLและห้ามใช้ [] ลูป forในฟังก์ชัน ห้ามใช้ฟังก์ชันสำเร็จรูป การ substring ให้เรียกใช้ฟังก์ชัน char* diff(char *s,char from,int len)

ผลการรันของเจ้าของกระทู้
Enter: Hello World
from: e
len: 3
: llo World

นี้คือโค๊ตที่ได้มา
           #include<stdio.h>
           #include<string.h>
           char* diff(char *s,char from, int len);

           int main(){
               char ls[128],m,*out;
               int len;
               printf("Enter:");
               gets(ls);
    
               printf("from:");
               scanf("%c",&m);fflush(stdin);
    
               printf("Len:");
               scanf("%d",&len);
    
               out = diff(ls,m,len);
               if(out != NULL){
               printf(":%s",out);
               }
               else{
               printf("Not have this word");
               }
           }
           char* diff(char *s,char from,int len){
               int m=1;
               char *ar;
               ar = s;
               while(*ar != '\0'){
                   if(*ar == from){
                       break;
                   }
                   ar++;
               }
               if(*ar != from){
                   return NULL;
               }
               else{
                   ar = s;
                   while(m<len){
                       ar++;
                       m++;
                       if(m == 2){
                           *ar = '\0';
                
                       }
            
                   }
                   return ar;
               }
           }
ขอบพระคุณในที่นี้ล่วงหน้าด้วย
แสดงความคิดเห็น
Preview
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่