เรื่องมีอยู่ว่าเจ้าของกระทู้ได้ลองทำโจทย์เกี่ยวกับภาษาซี แล้วผลที่ได้ไม่ตรงกับโจทย์ที่ต้องการ ข้อนี้เป็นข้อที่ยากสำหรับเจ้าของกระทู้พอสมควรเพราะเพิ่งหัดเขียนด้วย ช่วยดูโค้ตว่าผิดตรงไหน ต้องแก้แบบไหน แล้วแก้อย่างไร
โดยโจทย์เกี่ยวกับเรื่องการ 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;
}
}
ขอบพระคุณในที่นี้ล่วงหน้าด้วย
ถามเกี่ยวกับโค้ตภาษาซี
โดยโจทย์เกี่ยวกับเรื่องการ 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;
}
}
ขอบพระคุณในที่นี้ล่วงหน้าด้วย