-5
我正在開發一個項目,需要用一些規則拆分(*char
)字符串。他們每7個空格替換一個換行符\n
。做那四次。之後,用換行符替換每個第6個空格,然後執行四次。不會被換行符替換的空格
EX:
JD 2D 9H JC 5D 7H 7C 5H KD KC 9S 5S AD QC KH 3H 2S KS 9D QD JS AS AH 3C 4C 5C 10S QH 4H AC 4D 7S 3S 10D 4S 10H 8H 2C JH 7D 6D 8S 8D QS 6C 3D 8C 10C 6S 9C 2H 6H
完了
JD 2D 9H JC 5D 7H 7C
5H KD KC 9S 5S AD QC
KH 3H 2S KS 9D QD JS
AS AH 3C 4C 5C 10S QH
4H AC 4D 7S 3S 10D
4S 10H 8H 2C JH 7D
6D 8S 8D QS 6C 3D
8C 10C 6S 9C 2H 6H
代碼(I縮短它,併除去其他7個文件和爲了簡化代碼的開頭。)
state_t ret;
int s,c;
char * str;
card_t card;
char * sta;
state_init(&ret);
sta = string;
str = string;
int aoc=0;
int ao=0;
for(int a=0;(*sta)!='\n'; a++)
{
if((*sta)!=' ')
{
sta++;
str++;
}else
{
aoc++;
}
if(aoc==7&&ao<=4)
{
aoc=0;
ao++;
*str='\n';
}
else if(aoc==6&&ao>=4)
{
aoc=0;
ao++;
*str='\n';
}
if((*str)=='\n')
{
break;
}
}
printf(str);
代碼繼續,但這是錯誤點(我知道,因爲沒有這個代碼和一個預格式化的輸入該代碼每次都有效)。代碼完全沒有做任何事情,沒有實際的錯誤,而且字符串根本沒有改變。
MVCE:
void f(char*s,char*toString)
{
char c,i=0,j=0;
int num=0;
while(c=*(s++))
{
toString[num]=c;
// putchar(c);
if(c==' ')++i;
if((j<4&&i==7)||(j>=4&&i==6))
{
i=0;
++j;
toString[num]='\n';
// putchar('\n');
}
num++;
}
}
我一直在這個問題上,不能發現問題。很感謝任何形式的幫助。
爲什麼運行時代碼不會用換行符替換空格?
那麼,你在調試器中的代碼? – OldProgrammer
如果它不編譯,它不是一個MCVE。 –
@OldProgrammer沒有一個。 – Christopher