Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Bài tập về string !!!

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Mặc định Bài tập về string !!!

    Đề bài: Dùng hàm viết chương trình nhập vào một dãy ký tự (string), sau đó tính độ dài của dãy ( đếm có bao nhiêu ký tự).
    Đây là bài mình làm bị lỗi ở phần strlen, mọi người giúp với nhé !

    Code:
    #include <stdio.h>
    #include <string.h>
    void nhap_string (char *s);
    int do_dai_day ();
    int main (void)
    {
    	int k;
    	char s;
    	nhap_string (&s);
    	l=do_dai_day ();
    	printf("Do dai cua day la: %d\n",l);
    	return 0;
    }
    void nhap_string (char *s)
    {
    	char ss;
    	printf("Nhap vao mot day:\n");
    	while ((ss=getchar())!='#')
    	putchar (ss);
    	printf("\n");
    	*s=ss;
    }
    int do_dai_day ()
    {
    	int leng;
    	char s;
    	leng=strlen (nhap_string (&s));
    	return leng;
    }
    Em yêu anh không hề toan tính
    Tình yêu mình vô đối phải không anh!

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Hix:
    leng=strlen (nhap_string (&s));
    nhap_strinh(&s) có phải là chuỗi đâu bạn?
    Nếu muốn viết như vầy thì khai báo hàm nhap_string(... void _vParam ...) là kiểu string. Hoặc
    C++ Code:
    1. nhap_string(&s);
    2. leng = strlen(s);
    Xem lại về hàm strlen(str) nha.
    Với lại code của bạn linh tinh và lộn xộn wa'o. Bạn coi lại lý thuyết nhé.
    Thân!
    Đã được chỉnh sửa lần cuối bởi NT_OnlyLove : 16-05-2008 lúc 09:23 PM.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Cảm ơn bạn, đúng là code hơi lộn xộn thật. Ah mà mình có làm theo cách bạn chỉ, nhưng chương trình báo lỗi:
    Warning: passing argument 1 of 'strlen' make pointer from integer without a cast
    Em yêu anh không hề toan tính
    Tình yêu mình vô đối phải không anh!

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    468

    Trích dẫn Nguyên bản được gửi bởi h33h Xem bài viết
    Cảm ơn bạn, đúng là code hơi lộn xộn thật. Ah mà mình có làm theo cách bạn chỉ, nhưng chương trình báo lỗi:
    Warning: passing argument 1 of 'strlen' make pointer from integer without a cast
    Bạn xem lại khai báo biến s đi. Sai cơ bản rồi đó.

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    HN
    Bài viết
    0

    nếu bạn đã dùng string.h thì bạn nên dùng strlen() luôn còn ko có thể xây dựng lại hàm đây là code của mình bạn có thể tham khao
    Code:
    #include <stdio.h>
    #include <conio.h>
    int strlen(char *s)
    {
    	char *p=s;
    	while(*p!='\0')
    		p++;
    	return (p-s);
    }
    void main()
    {
    	char str[30];
    	printf("\nNhap sau:");gets(str);
    	printf("\nDo dai sau:%d",strlen(str));
    	getch();
    }

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Mặc định Bài tập về string !!!

    Mình học C trong Linux, hàm strlen () mình chưa được học.
    Em yêu anh không hề toan tính
    Tình yêu mình vô đối phải không anh!

  7. #7
    Ngày gia nhập
    02 2008
    Nơi ở
    HN
    Bài viết
    0

    hàm strlen() là hàm trả lải độ dài của 1 sâu kí tự trong string.h nếu bạn chưa đc học có thể xây dựng lại hàm tính độ dài như cách trên hoặc còn nhiều cách khác nữa

  8. #8
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Thx boyvn8x, câu trả lời của bạn rất đúng. Nhưng mình chưa hiểu lắm về việc tại sao lại return (p-s) ở hàm strlen () mà ko phải là return p ?
    Em yêu anh không hề toan tính
    Tình yêu mình vô đối phải không anh!

  9. #9
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    468

    Trích dẫn Nguyên bản được gửi bởi h33h Xem bài viết
    Thx boyvn8x, câu trả lời của bạn rất đúng. Nhưng mình chưa hiểu lắm về việc tại sao lại return (p-s) ở hàm strlen () mà ko phải là return p ?
    Lấy địa chỉ sau đuôi trừ địa chỉ đầu thì ra độ dài.

  10. #10
    Ngày gia nhập
    12 2006
    Bài viết
    28

    Bạn cứ xem chuổi như là một mảng đi
    Rồi sao đó bạn duyệt qua mảng đó một lần là biết được số ký tự của chuổi đó chứ gì !!(Nhớ có kiểm tra khoảng trắng)
    bạn có thể tham khảo code này:

    Code:
    #include<stdio.h>
    #include<string.h>
    void main()
    {
    	char s[100];
    	int len;
    	int sotu=0;
    	gets(s);
    	len=strlen(s);
    	for(int i=0;i<len;i++)
    		if(s[i]!=32)
    			sotu++;
    	printf("So tu cua chuoi la: %d",sotu);
    }
    bigdog

Các đề tài tương tự

  1. C++ Tutorial hướng dẫn thao tác string variable.. kiểu dữ liệu string
    Gửi bởi beautifulsoul84hung trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 05-12-2016, 03:20 AM
  2. làm thế nào chuyển String o[] sang String hoặc byte[].
    Gửi bởi zzvanquyenzz trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 17-06-2013, 09:24 AM
  3. Method String.CompareTo(string strB) trong C# thực hiện so sánh 2 chuỗi như thế nào?
    Gửi bởi tpqnnd trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 27-05-2012, 10:52 AM
  4. Bài tập C++ tạo toán tử ==trong lớp string với tham số là string, char
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-10-2011, 08:56 AM
  5. Lập trình C++ sử dụng string trong C++. Lỗi C2146: syntax error : missing ';' before identifier tại string string_rep()const;?
    Gửi bởi levanvuonglvv trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 15-09-2011, 10:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn