,和strchr()只查找一次一个字符(和你没有正确调用它),这样就需要在PUNCT每个字符循环中调用。这里有一个函数来查找它们中的任何一个。此外,您没有正确使用strcat()。
#include <string.h>
#include <stdio.h>
int char_position(const char *string,const char *chars)
{
int length = strlen(string);
while (*chars)
{
for (int i = 0; i < length; i++)
{
if (string[i] == *chars)
{
return i;
}
}
chars++;
}
return -1;
}
const char *highlight(const char *word)
{
#define fhighlight "<font_color=\"red\"><b>"
#define bhighlight "</b></font>"
#define punct ".,;:!?"
#define wordlen 1500
static char w[wordlen];
strcpy(w,fhighlight);
int position = char_position(word,punct);
if (position != -1)
{
strncat(w,word,position);
strcat(w,bhighlight);
strcat(w,&word[position]);
} else {
strcat(w,word);
strcat(w,bhighlight);
}
return w;
}
int main(void)
{
printf("%s\n",highlight("Robert:"));
printf("%s\n",highlight("Roberta"));
printf("%s\n",highlight("LaDonna! is coming"));
}
您的代码会在很多方面中断。调试并纠正它们。 – Abhineet
您需要的帮助是阅读C语言教程,采取Ç班等,因为你正在写是不是C. –
这个程序甚至不会编译,当它它很可能会崩溃。我们和其他问题可能会帮助你,但请先阅读http://sscce.org/。 –