我正在尝试在一行中打印一个短语,但我的 do-while 循环中有一个额外的换行符,我想知道为什么?

问题描述 投票:0回答:1

晚上好,我创建了一个单词搜索程序,我的输出应该采用

"A palavra % está no texto!"
"A palavra % não está no texto!"
的形式,但它看起来像这样: 帕拉瓦诺特 não está 没有文字!

我的代码是这样的:

if(veredito!=0){     

c=0;     

printf("A palavra ");     

do{         

printf("%c", palavras[l][c]);         

c++;

}         while(palavras[l][c-1]!='\0');     

printf(" está no texto!\n");

} else{     

c=0;     

printf("A palavra ");     

do{         

printf("%c", palavras[l][c]);         

c++;

}         while(palavras[l][c-1]!='\0');     

printf(" não está no texto!\n"); }

我尝试将所有短语放在一行中,但不起作用。我如何创建一个 char 类型矩阵来注册单词,我使用 do-while 循环来运行打印代码正在分析的行的所有字符。该矩阵的每一行都记录一个不同的单词,幸运的是它正在工作!所以真正的问题是 printf 函数......

P.s.:抱歉缺少标识,该网站的问题正文无法识别我的代码。

c matrix char printf line-breaks
1个回答
0
投票

根据缺失的代码块以及数据的形成方式,只有这样:

更换:

do {         
    printf("%c", palavras[l][c]);         
    c++;
} while(palavras[l][c-1]!='\0'); // see the ** note below

与:

for( c = 0; palavras[l][c] && palavras[l][c] != '\n'; c++ )
    putchar( palavras[l][c] );

当遇到字符串末尾或换行符时,这将终止循环。这也使用了轻量级

putchar()
函数而不是重量级
printf()

** 请注意,在测试字符值之前,首先 trys 打印

'\0'
?不需要!

© www.soinside.com 2019 - 2024. All rights reserved.