【发布时间】:2015-12-19 23:28:57
【问题描述】:
在确认 strcat 是错误发生的位置后,我检查了作业中的前面示例。在我之前的示例中,我使用 strcat(实际上是 strncat) 的方式与我在下面的代码中使用的方式相同。我不太确定。
我的程序的目的是遍历“字符串”并从字符串中删除任何出现的字符“c”。
main.c:
char string[100]={0}, c[3];
printf("Enter a String: ");
fgets(string, 100, stdin);
if (string[98] == '\n' && string[99] == '\0') { while ( (ch = fgetc(stdin)) != EOF && ch != '\n'); }
printf("Enter a Char: ");
fgets(c, 2, stdin);
while ( (ch = fgetc(stdin)) != EOF && ch != '\n');
rmchr(string, c[0]);
标题:
rmchr(char *string, char c)
{
int i=0;
char *word[100];
int s = strlen(string);
for(i=0; i<=(s-2); i++)
{
if(string[i] != c)
{
strcat(word, string[i]);
}
}
}
【问题讨论】:
-
strcat(word, string[i]);应该编译失败。 -
GCC 有时将字符串函数声明为内在函数,即使程序员忘记了
#include <string.h>。 -
你的头文件中有rmchr函数吗?如果是这样,它应该被移动到一个 C 文件中。
-
顺便说一句,我会使用更少的幻数,比如 100,更多的常量,比如
LONGESTWORD或者像sizeof(array)这样的表达式(但不是指针!)。
标签: c arrays char append strcat