这里为什么会多个引号呢? 明明两次都是拼接的"非"
#include
#include
#define SENT_LEN 5
#define WORDS_NUM 2
#define STR_LEN 101
int main(int argc, char** argv)
{
int i, j;
char words[SENT_LEN][STR_LEN] = {"非","淡泊","无以","明志","!"};
char source[WORDS_NUM][STR_LEN] = {"淡泊","明志"};
char target[WORDS_NUM][STR_LEN] = {"宁静","致远"};
char sentence_before[STR_LEN];
char sentence_after[STR_LEN];
for (i = 0; i < SENT_LEN; ++i)
{
strcat(sentence_before, words[i]);
for (j = 0; j < WORDS_NUM; ++j)
if (strcmp(words[i], source[j]) == 0)
strcpy(words[i], target[j]);
strcat(sentence_after, words[i]);
}
puts("替换前:");
puts(sentence_before);
puts("替换后:");
puts(sentence_after);
return 0;
}
char sentence_before[STR_LEN] = {0};
char sentence_after[STR_LEN] = {0};
数组要初始化为0,否则没有字符串结束符
将这两个字符串数组初始化下:
char sentence_before[STR_LEN] = {0};
char sentence_after[STR_LEN] = {0};
由于以下两个数组未初始化,即未提供初始值就进行使用,因此会出现未知的字符,图中编译出现引号,出现引号其实只是随机的,不同的编译下可能也会出现其他的字符。
** char sentence_before[STR_LEN];
char sentence_after[STR_LEN];**