ตัวอย่าง

Download Report

Transcript ตัวอย่าง

Laboratory I
Operator of String Data Type
String
• Data Type (ชนิดข้อมูล) ที่เป็ นสายอักขระเรี ยง
ต่อเนื่องกันโดยมีจุดสิ้ นสุ ดที่ตวั อักษรพิเศษที่เรี ยกว่า Null
Character แสดงด้วยโค้ด ‘\0’
รู ปแบบการกาหนดตัวแปรสตริง
char ชื่อตัวแปรสตริ ง[จานวนตัวอักษร];
ตัวอย่ าง
char str[80];
char msg[] = “Welcome to Silpakorn University”
gets
• เป็ นฟังก์ชนั ใช้สาหรับรับค่าตัวแปรสตริ งจากคียบ์ อร์ด
รูปแบบการใช้
gets(ตัวแปรสตริ ง);
ตัวอย่ าง
Enter: cat is white
char str[80];
Result is
printf(“Enter : ”);
cat is white
gets(str);
printf(“result is \n%s\n”,str);
strcpy
• เป็ นฟังก์ชนั ใช้สาหรับคัดลอกค่าสตริ งต้นทางไปยังตัวแปรสตริ ง
ปลายทาง
รูปแบบการใช้
strcpy(สตริ งป ล า ย ท า ง , สตริ งต้นทาง);
ตัวอย่ าง
Result is
trains is very slow
char str[80];
strcpy(str, “trains is very slow”);
printf(“result is \n%s\n”,str);
strcat
• เป็ นฟังก์ชนั นาสตริ งต้นทางไปต่อท้ายสตริ งปลายทาง
รูปแบบการใช้
strcat(สตริ งป ล า ย ท า ง , สตริ งต้นทาง);
ตัวอย่ าง
char str[80];
char *postfix = “korn”;
strcpy(str, “Silpa”);
Strcat(str, postfix);
printf(“result is %s\n”,str);
Result is Silpakorn
strcmp
• เป็ นฟังก์ชนั ใช้สาหรับเปรี ยบเทียบสตริ ง s1 และสตริ ง s2
รูปแบบการใช้
strcat(สตริ ง s1, สตริ ง s2);
ตัวอย่ าง
char str[80] = “abcd”;
int x = strcmp(str, “abcd”);
printf(“result is %d\n”,x);
Result is 0
strcmp
ผลลัพธ์ เป็ นค่ าจานวนเต็ม
• โดยถ้ า s1 น้ อยกว่ า s2 จะได้ ผลลัพธ์ มีค่าน้ อยกว่ าศูนย์ 0
• โดยถ้ า s1 เท่ ากับ s2 จะได้ ผลลัพธ์ มีค่าเท่ ากับศูนย์ 0
• โดยถ้ า s1 มากกว่ า s2 จะได้ ผลลัพธ์ มีค่ามากกว่ าศูนย์ 0
ตัวอย่ าง
printf(“result is %d\n”, strcmp(“ABCD”, “abcd”));
printf(“result is %d\n”, strcmp(“abcd”, “abcd”));
printf(“result is %d\n”, strcmp(“abcd”, “ABCD”));
strlen
• เป็ นฟังก์ชนั ไว้สาหรับหาความยาวของสตริ ง
รูปแบบการใช้
strlen(สตริ ง);
ตัวอย่ าง
char str[80] = “abcd”;
int x = strlen(str);
printf(“result is %d\n”,x);
Result is 4
strtok
• เป็ นฟังก์ชนั สาหรับแยกสตริ งด้วยการกาหนดตัวแยกเป็ นสตริ ง
ตัวอย่างเช่น
char a = “ab-cdefg-hijk”;
ถ้าเราให้ตวั แยกเป็ น “–” จะได้วา่ สตริ งข้างต้นมี 3 สตริ งย่อยคือ
สตริ งย่อยตัวที่ 1 คือ ab
สตริ งย่อยตัวที่ 2 คือ cdef
สตริ งย่อยตัวที่ 3 คือ hijk
strtok
รูปแบบการใช้
strtok(สตริ ง s1, สตริ ง s2);
s1
ขั้นตอนการทางานของฟังก์ ชัน
a1 s2
/0
1. หาสตริ ง s2 ที่ปรากฏใน s1
2. ถ้าเจอแทน s2 ด้วย null character
3. คืนค่า s1
a2
strtok
วิธีการใช้งานจริ งจะต้องมี 2 ขั้นคือ
ขั้นที่ 1. ตัดสตริ งตัวแรกจากสตริ งตั้งต้น s1 จะเรี ยกใช้ดงั นี้
strtok(str, “-”);
ขั้นที่ 2. ตัดสตริ งต่อจากสตริ ง s1 เดิม จะเรี ยกใช้ดงั นี้
strtok(NULL, “-”);
ตัวอย่างโปรแกรมใช้ strtok
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(){
char str[80];
char *p;
clrscr();
strcpy(str, “cat&dog”);
p = strtok(str, “&”); printf(“%s\n”,p);
p = strtok(str, “&”); printf(“%s\n”,p);
p = strtok(str, “&”); printf(“%s\n”,p);
getch();
}
atoi
• เป็ นฟังก์ชนั สาหรับแปลงค่าข้อความสตริ งที่อยูในรู ปตัวเลขให้เป็ น
ค่าตัวเลขที่สามารถนามาคานวณได้
• ถ้าไม่สามารถแปลงได้จะคืนค่าศูนย์มาให้ เช่น “abc” เป็ นต้น
รู ปแบบการใช้
atoi(สตริ งใ น รู ป ต วั เล ข );
ตัวอย่ าง
int x = atoi(“123”);
printf(“result is %d\n”,x);
Result is 123
ตัวอย่างโปรแกรมใช้ atoi
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
int n;
char *str;
strcpy(str,"123.4567");
n
printf("string = %s integer
strcpy(str,"123");
n
printf("string = %s integer
strcpy(str,"T123");
n
printf("string = %s integer
strcpy(str,"1T23");
n
printf("string = %s integer
strcpy(str,"123T");
n
printf("string = %s integer
return 0;
}
=
=
=
=
=
=
=
=
=
=
atoi(str);
%d\n", str,
atoi(str);
%d\n", str,
atoi(str);
%d\n", str,
atoi(str);
%d\n", str,
atoi(str);
%d\n", str,
n);
n);
n);
n);
n);