Nhập 1 chuỗi in ra chuỗi với thứ tự các từ trong chuỗi bị đảo ngược?

Em có một bài như thế này: nhập 1 chuỗi in ra chuỗi với thứ tự các từ trong chuỗi bị đảo ngược, VD:
input: nguyen hong hai
output: hai hong nguyen
em làm mãi nhưng output toàn bị ra kí tự lạ:

 #include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
	int i, j;
	char a[100];
	printf("Enter the string: ");
	fflush(stdin);
	gets(a);
	i = strlen(a) - 1;
	while(i >= 0)
	{
		if(a[i-1] == ' ' && i != 0)
		{
			j = i;
			while(a[j] != ' ') 
			{
				printf("%c", a[j]);
				j++;
			}
			printf(" ");
		}
		else if(i == 0)
		{
			j = i;
			while(a[j] != ' ')
			{
				printf("%c", a[j]);
				j++;
			}
		}
		i--;
	}
}

[quote=“Phantom, post:1, topic:8668”]

dòng include em copy bị lỗi một chút ạ!

Bôi đen toàn bộ code và Nhấn Ctrl + K để cho code dễ đọc

2 Likes

Sửa code đọc cho dễ đi bạn

dạ em vừa sửa rồi đấy ạ ^^

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
	int i, j;
	char a[100];
	printf("Enter the string: ");
	fflush(stdin);
	gets(a);
	printf("%s\n",a);
	i = strlen(a) - 1;
	while(i >= 0)
	{
		if(a[i] == ' ' && i != 0)
		{
			
			j = i + 1;
			while(a[j] != ' ' && a[j] != '\0') 
 //Thêm vào && a[j] != '\0'
    			{
    				printf("%c", a[j]);
    				j++;
    			}
    			printf(" ");
    		}
    		else if(i == 0)
    		{
    			j = i;
    			while(a[j] != ' ')
    			{
    				printf("%c", a[j]);
    				j++;
    			}
    		}
    		i--;
    	}
    }

Sai ở dòng 19 đoạn kiểm tra a[j] trường hợp nó kết thúc chuỗi thì nó là NULL

1 Like

ồ em cảm ơn ạ ^^ 20 characters=))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?