晚上好,我创建了一个单词搜索程序,我的输出应该是"A palavra % está no texto!"
或"A palavra % não está no texto!"
的形式,但它看起来像这样:一个公告还没发短信呢!
我的代码是这样的:
#include <stdio.h>
#include <stdlib.h>
#define MAX 300
#define CHAR 20
int main(){
int W, w;
scanf("%d ", &W); /*W is the number of words/lines in the matrix words*/
char words[MAX][CHAR];
for(w=0; w<W; w++){
int c=0;
do{
scanf("%c", &words[w][c]);
c++;
}while(words[w][c-1]!= '\n' && c<CHAR);
}
/* the variable ultimate is declared in the complete code.In this example
the most important thing is the extra line-break in the output of the conditional if*/
int ultimate=1, c=0;
/*the variable l(line) is the line index of the word matrix. The c variable is the column index
Supose that we have three words: words[0]=[NIGHT...000], words[1]=[SUN...000] and
words[2]=[MOON...000]*/
int l=2;
if(ultimate!=0){
c=0;
printf("A palavra ");
do{
printf("%c", words[l][c]);
c++;
}while(words[l][c-1]!='\0');
printf(" está no texto!\n");
}else{
c=0;
printf("A palavra ");
do{
printf("%c", words[l][c]);
c++;
}while(words[l][c-1]!='\0');
printf(" não está no texto!\n");
}
return 0;
}
我试着把所有的短语放在一行,但它不起作用。我如何创建一个类型字符矩阵来注册单词,我使用了一个do-while循环来运行print代码分析行的所有字符。这个矩阵的每一行都记录了一个不同的单词,幸运的是,它正在工作!所以真实的问题是printf函数.
注:很抱歉没有标识,这个网站的问题的主体没有识别我的代码。
1条答案
按热度按时间qni6mghb1#
根据缺失的代码块以及数据是如何形成的,只有这个:
替换:
使用:
这将终止循环时,字符串的结束或一个 newline 是遇到。这也使用了轻量级的
putchar()
函数,而不是重量级的printf()
。**注意到这个
do/while()
在测试字符值之前首先 * 尝试 * 打印'\0'
吗?不需要!PS:你能看到
printf("A palavra ");
的重复吗?在
if()
语句的 * 前面 * 放置一个副本,以减少重复。