C語言改錯題,題目是:輸入一串字符,并在字符串中從第m個字符開始截取n個字符#include <stdio.h>#include <string.h>void main(){char str[100],sub[100];int m,n,len,i;printf("Enter string:");gets(str);printf("\nEnter m n:");scanf("%d%d",&m,&n);len=strlen(str);if( m-1+n>len )printf("Can't run with %d and %d!\n",m,n);else{ i=0;/**/ while(i<=n) /**/ i<n{/**/ sub[i]=str[m+i]; /**/ sub[i]=str[m+i-1];i++;}/**/ sub[i]='\n'; /**/ sub[i]='\0'printf("sub string is:%s\n",sub);}getch();}請問中間改錯那些為什么是那樣子,怎么解釋:輸入一串字符,并在字符串中從第m個字符開始截取n個字符求程序整個過程解析
2 回答

Eric_溫水之蛙
TA貢獻8條經(jīng)驗 獲得超3個贊
str[0]?=?1 str[1]?=?2 str[2]?=?3 str[3]?=?4 str[4]?=?5 str[5]?=?6 str[6]?=?7 str[7]?=?8 str[8]?=?9 m=3,n=4 循環(huán)1: i?=?0 判斷i<n?=>?0<4?->?true sub[i]=str[m+i-1]?=>sub[0]=str[3+0-1]?->?sub[0]?=?3 i++?->?i=1 循環(huán)2: i?=?1 判斷i<n?=>?1<4?->?true sub[i]=str[m+i-1]?=>sub[1]=str[3+1-1]?->?sub[1]?=?4 i++?->?i=2 循環(huán)3 i?=?2 判斷i<n?=>?2<4?->?true sub[i]=str[m+i-1]?=>sub[2]=str[3+2-1]?->?sub[2]?=?5 i++?->?i=3 循環(huán)4: i?=?3 判斷i<n?=>?3<4?->?true sub[i]=str[m+i-1]?=>sub[3]=str[3+3-1]?->?sub[0]?=?6 i++?->?i=4 循環(huán)5: i?=?4 判斷i<n?=>?4?<?4?->?false 跳出while sub[i]?=?'\0??=>?'sub[4]?='\0' 此時sub的值為 sub[0]?='3' sub[1]?='4' sub[2]?='5' sub[3]?='6' sub[4]?='\0'
- 2 回答
- 0 關(guān)注
- 1903 瀏覽
添加回答
舉報
0/150
提交
取消