Ký tự lạ tự động thêm vào khi tách chuỗi trong C
mình có một chương trình tách tên và họ và đệm ra thành cách thành phần riêng biệt
đoạn code đó đây
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
printf("xin chao cac ban moi cac ban nhap ten
cac ban nhap thoe thu tu sau ho roi cach ten dem neu thi
khong cach viet lien roi scah den ten nha
");
char name[30]= {0},a[10]= {0},b[30]= {0},c[10]= {0};
printf("moi ban nhap ten cua ban nha :");
gets(name);
int d =strlen(name);
for(int i=0; i<d+1; i++)
{
if(name[i]==' ')
break;
a[i]=name[i];
dem++;
}
int j=0;
for(i=dem+1,j=0; i<d+1,j<10; i++,j++)
{
if(name[i]==' ')
break;
b[j]=name[i];
dem++;
}
for(i=dem+1,j=0; i<d+1,j<10; i++,j++)
{
c[j]=name[i];
}
printf("ho cua ban la :%s
",a);
printf("ten dem cua ban la :%s
",b);
printf("ten cua ban la :%s
",c);
return 0;
}
đọn code này cahyj ổn ok luôn nhưng đây là đoạn code thứ 2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
printf("xin chao cac ban moi cac ban nhap ten
cac ban nhap thoe thu tu sau ho roi cach ten dem neu thi
khong cach viet lien roi scah den ten nha
");
char name[30],a[10],b[30],c[10];
printf("moi ban nhap ten cua ban nha :");
gets(name);
int d=strlen(name);
for(int i=0; i<d+1; i++)
{
if(name[i]==' ')
break;
a[i]=name[i];
dem++;
}
int j=0;
for(i=dem+1,j=0; i<d+1,j<10; i++,j++)
{
if(name[i]==' ')
break;
b[j]=name[i];
dem++;
}
for(i=dem+1,j=0; i<d+1,j<10; i++,j++)
{
c[j]=name[i];
}
printf("ho cua ban la :%s
",a);
printf("ten dem cua ban la :%s
",b);
printf("ten cua ban la :%s
",c);
return 0;
}
đoạn này lại chạy không hề ổn một tý nào cả
vi dụ tên mình là đõ minh nhiên
thì nó sẽ tách ra là đoa
minh
nhien mình vẫn chưa hiieur tại sao phần tên và phần đẹm nó lại tách ổn còn phần họ nó lại thêm vào đó một ký tự à
đây là chường trình mình viết chỉ áp dụng cho họ và tên có 3 từ thôi à chưa phát triển lên tổng quát
mong mọi người giúp đõ nha
thanh anh nhiều lắm lần sau em sẽ chú ý hơn à @drgnz
Bạn thêm ký tự
'\0'
vào cuối các mảng a,b,c sau các vòng for thử.Dấu ngoặc nhọn bí ẩn của năm (ở cuối).
Biến
d
bí ẩn của nămlại là biến
d
bí ẩn của nămVà cuối cùng vẫn là anh chàng
d
bí ẩn của nămMình chưa có thời gian nên xem qua loa 2 đoạn code thôi. Nói chung code bạn hơi dài dòng tí
minh quen chua xoa cai dau ay day ban a @tucanhminh }
d la bien diem minh co viet roi nhung copy thieu day ban a
la code của mình mà bạn mình copy tu ide ra mà
Mình test thử code bạn chạy ko có lỗi như bạn nói.
chỉ có 3 warning sau nhưng nó ko ảnh hưởng đến tính chính xác của ct:
-sử dụng hàm gets() ko an toàn cho lắm (mình gần như chưa bh dùng hàm gets() , thấy ct báo lỗi thế)
Bạn tự nghĩ 1 lúc cách sửa warning nhé còn ct mình thấy chạy đúng rồi