Các thao tác cơ bản với mảng kí tự

bạn để dòng #pragma disable(warning:4996) lên đầu file coi được không. Cái lỗi nhìn hơi lạ lạ =))

1 Like

không được luôn bạn ơi, nó cũng bị lỗi y chan như vậy.

Sau một hồi tìm kiếm trên mạng, người ta nói không nên sử dụng ‘strcpy’ vì nó không an toàn ('có khả năng bị lỗi dẫn đến tràn chỗ chứa) và khuyên chuyển sang dùng ‘strcpy_s’

1 Like

Sao bạn biết hàm toupper hay vậy? Mình trừ 32 :)))) mở ascii

1 Like

Bài tập 1: Chuỗi ký tự

#include <iostream>

using namespace std;

int main() {

	char text[] = "This is a simple string";

	for (unsigned int i = 0; i < strlen(text); i++) {

		if (int(text[i]) >= 97 && int(text[i]) <= 122) {

			text[i] -= 32;
		}
	}

	cout << text << endl;

	system("pause");
	return 0;
}
1 Like

Bài 2: Chuỗi ký tự

#include <iostream>

using namespace std;

int main() {

	char str[] = "My name is bill";
	char ch = 'n';

	int count = 0;

	for (unsigned int i = 0; i < strlen(str); ++i) {

		if (ch == str[i]) {

			++count;
		}
	}

	system("pause");
	return 0;
}
1 Like

Mình muốn hỏi cách yêu cầu người dùng nhập đoạn string thì như nào bạn

1 Like
3 Likes

Bạn có thể làm bài một bằng cách yêu cầu người dùng nhập chuỗi ký tự k?

1 Like

Mình muốn dùng memset để chèn vào kí tự ở một vị trí bất kỳ thì làm thế nào mọi người?

1 Like

memset sao có thể dùng để chèn kí tự vào 1 vị trí nhất định được?

2 Likes

Bạn thêm & vào vị trí của chuỗi mà bạn muốn chèn ký tự. Ví dụ:

    char foo[] = "Almost every programmer should know memset!";
    	cout << foo << endl;

    	// Chen 7 ky tu * vao chuoi foo bat dau tu ky tu thu 5
    	memset(&foo[4], '*', 7);
    	cout << foo << endl;

Kết quả

Almost every programmer should know memset!
Almo*******y programmer should know memset!
1 Like

Bài 2:

#include <iostream>
#include <cstring>

using namespace std;

#define MAX_STR 100

int main()
{
	char str[MAX_STR], chr[2] ;
	cout << "Enter a string: "; cin.getline(str,MAX_STR);
	cout << "Enter a character : "; cin.getline(chr,2);

	int count=0;
	for(int i=0;i<=strlen(str)-1;i++)
	{
		if (str[i]==chr[0])
			count++;
	}

	cout<<"Character "<<chr<< " appears "<< count<<" time(s) in the string"<<endl;

	return 0;
}
1 Like

/Bài 2:

#include <stdio.h>
#include <iostream>
#include <string>
#include <ctype.h>

using namespace std;

int main( int argc, const char * argv[]) {
    //nhập chuỗi ký tự
    char str[256];
    cout << "Nhap chuoi ky tu: "; cin.getline(str, 256);

    //nhập ký tự
    char ch;
    cout << "Nhat ky tu can dem: "; cin >> ch;

    //tạo biến đếm số lượng
    int dem = 0;

    //đếm ký tự nhập trùng với ký tự chuỗi
    for (int64_t i = 0; i< strlen(str); i++) {
        if (ch == str[i])
            dem++;
    }

    cout << "So luong ky tu trong chuoi la: " << dem << endl; //xuất số lượng
    return 0;
}
1 Like

Mọi người ơi cho em hỏi đây là lỗi gì với ạ?

{
   char nig[50], minecraft[50];
   cout << "Enter a string: ";
   cin.getline(nig, 50);
   
   strncpy(minecraft, nig);   //Lỗi ở đây ạ

   cout << "Minecraft string right now is: " << minecraft << endl;
   return (0);
}
1 Like

Hàm strncpy() yêu cầu đủ 3 tham số. Nếu muốn chỉ có 2 tham số thì dùng strcpy().

3 Likes

VS lại bắt dùng cái strcpy_s bây giờ :gach:

4 Likes

Thế mà em không để ý, cảm ơn anh :sweat_smile::sweat_smile::sweat_smile:

int32_t match_index = (p - text) / sizeof(char);

chỗ sizeof(char) này bỏ đi vẫn ra kết quả là 10 thì bỏ đi có được ko ạ

Được vì lúc trừ nó đã chia cho sizeof(*p) rồi.

4 Likes

Bài 2:

#include <iostream>
#include <array>
#include<string.h>
using namespace std;
int main(){
    char mang[]="This is a simple string";
    char ch[] = "i";
    int k=0;
    for(int j=0;j<strlen(mang)-1;j++){
    if(mang[j]==ch[0]){k=k+1;}
    }
      cout<<k; }
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?