01/10/2018, 12:36
Khai báo con trỏ
TẠI SAO SỬA S[100] THÀNH *S[100] CHƯƠNG TRÌNH CHẠY SAI?
// Viet CHU HOA DAU CHUOI CON LAI chu thuong BANG CON TRO
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char S[100];
printf("Moi ban nhap chuoi(lam on chi nhap chu):");
gets(S);
int i;
if(*(S + 0)>='A' && *(S + 0)<='Z')// Chuyen ki tu dau thanh hoa
printf("%c",*(S + 0));
else
printf("%c",*(S + 0)-32);// neu thuong thi chuyen thanh hoa
for(i=1;i<strlen(S);i++)
{
if(*(S + i)!=' ')// ki tu tiep theo cach khac khoang trang
{
if(*(S + i)>='A' && *(S + i)<='Z')// chu hoa thanh thuong
printf("%c",*(S + i)+32);
else
printf("%c",*(S + i));// neu ko giu nguyen
}
else// neu gap khoang trang
printf("%c",*(S + i));// in ra khoang trang
}
getch();
Bài liên quan
Trong C/C++ thì mảng [] nó mặc định là con trỏ, việc bạn chuyển [quote=“Pham_Xuan_Tuyen, post:1, topic:58936”]
S[100] THÀNH *S[100]
[/quote]
Tức là bạn đang đưa một mảng [] thành một con trỏ của mảng *[], lúc này để truy cập vào các phần tử của mảng thì bạn phải lồng thêm một dấu *. Chưa kể bạn phải định nghĩa cho *char S trước khi sử dụng, vì bản thân nó đang là một con trỏ rỗng.