30/09/2018, 18:44
Viết chương trình đổi những ký tự đầu tiên của mỗi từ thành chữ in hoa
Đề bài là: Viết chương trình đổi những ký tự đầu tiên của mỗi từ thành chữ in hoa. Em có search google được cái hàm và chạy như dưới đây thì đúng.
#include<iostream>
#include<string>
using namespace std;
#define MAX 50
void toUp(char*);
int main()
{
char a[MAX];
cout << "Nhap chuoi a" << endl;
cin.getline(a, MAX);
toUp(a);
cout << a << endl;
system("pause");
}
void toUp(char *a)
{
a[0] = toupper(a[0]);
while (strstr(a, " ") != NULL)
{
a = strstr(a, " ") + 1;
a[0] = toupper(a[0]);
}
}
Còn khi như này thì báo lỗi ngay dòng a = strstr(a, " ") + 1;
#include<iostream>
#include<string>
using namespace std;
#define MAX 50
int main()
{
char a[MAX];
cout << "Nhap chuoi a" << endl;
cin.getline(a, MAX);
while (strstr(a, " ") != NULL)
{
a = strstr(a, " ") + 1;
a[0] = toupper(a[0]);
}
cout << a << endl;
system("pause");
}
Các anh giải thích giúp em với, em mới bắt đầu nhập môn C/C++ trên trường thôi, mấy vấn đề liên quan tới con trỏ em chưa nắm chắc lắm.
Bài liên quan
Hàm
strstr
nằm trong thư việnstring.h
, và bạn chưainclude
thư viện này vào --> báo lỗi. Trong C++ dùng lệnh#include <cstring>
để đưa thư việnstring.h
vào.Còn thư viện
#include <string>
là lớp string của C++, nó không có hàmstrstr
.Em đã sửa ctring hay string.h nhưng vẫn báo lỗi ở dòng đó
Bạn nhìn kĩ kiểu dữ liệu chỗ hàm ToUp là char *a
Còn ở hàm int của bạn nó khác nhau. Nên lỗi
Không khác đâu bạn, thực ra mảng cũng là một loại con trỏ.
Lúc mình mới bắt đầu học còn mù mờ nên mang lên đây hỏi
Tới bh mình vẫn k hiểu đc con trỏ :((. Bạn học khoa nào đấy
2 posts were merged into an existing topic: Topic này chứa các post được cho là Off-topic
Lỗi phát sinh là do bạn đang cố gắng thay đổi giá trị ô nhớ mà tên mảng (biến
a
) đang trỏ tới tại dòng:a = strstr(a, " ") + 1;
Trong C/C++, tên mảng tuy cũng là một biến chứa địa chỉ ô nhớ giống như biến con trỏ (vì lý do này nên mọi người thường mặc định coi mảng là con trỏ), nhưng tên mảng khác biến con trỏ về bản chất, cụ thể như sau:
Để chương trình thứ 2 của bạn có thể chạy được, thì bạn phải sử dụng một biến con trỏ trung gian, và thao tác trên đó. Bạn có thể sửa lại như sau:
Mình đã giải quyết bài này xong rồi, cũng giống như cách bạn vừa làm
Dù sao cũng cảm ơn vì sự nhiệt tình giải thích của bạn, chắc chắn nó sẽ rất có ích với mấy bạn mới học như mình lúc đó.
Buổi tối vui vẻ ạ