C語言字符串輸出中文亂碼

出現錯誤

使用for循環將一個字符串複製到另一個字符串數中,在控制檯輸出字符串,出現了一堆中文亂碼,如下圖:
字符串輸出中文亂碼

錯誤原因

在字符串複製時由於字符串的長度過長,且複製時「未添加'\0'作爲字符串的結束標誌」,沒有識別到結束信號,就出來了一堆亂碼。如下面代碼

#include<stdio.h>
#include<string.h>
int main()
{
	//求b字符串在a中的位置
	 char s[50];
	 char c[50];
	 char si[10][50];
	 int d,m,n;
	 int lena,lenb;
	 scanf("%s",&s);
	 scanf("%s",&c);
	 lena = strlen(s);
	 lenb = strlen(c);
	 for(d = 0; d < lena - lenb; d++)
	 {
		 for(m = 0; m < lenb; m++)
		 {
		 	//複製字符串到另一個字符串數組中
			 si[d][m] = s[m + d];
		 }
		 //si[d][m] = '\0';  添加字符串結束標誌,未添加則報錯
		 printf("%s\n",si[d]);
		 if(!strcmp(si[d],c))
			 break;
	 }
	 printf("%s在%s中的位置:%d\n",c,s,d+1);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章