【发布时间】:2012-10-08 00:46:14
【问题描述】:
所以我正在尝试使用这部分代码查找单词的所有实例
fseek(src, 0, SEEK_END);
int size = ftell(src);
fseek(src, 0, SEEK_SET);
int line = 0;
int i = 0;
char ch = ' ';
char *word;
char lastch = 'x';
int j = 0;
int lines[getLines(src)];
for(i = 0; i < getLines(src); i++){
lines[i] = -1;
}
for(i = 0; i < size; i++){
ch = fgetc(src);
printf("%s %c", word, '\n');
if(!isspace(lastch) && isspace(ch)){
if(strcmp(word, find) == 0){
if(lines[j - 1] != line){
lines[j] = line;
j++;
}
}
}else{
if(isspace(lastch) && isspace(ch)){
continue;
}else if(isspace(lastch) && !isspace(ch)){
word = "";
append(word, ch);
}else if(!isspace(lastch) && !isspace(ch)){
append(word, ch);
}
}
lastch = ch;
}
append() 在哪里
char *append(const char *s, char c) {
int len = strlen(s);
char buf[len+2];
strcpy(buf, s);
buf[len] = c;
buf[len + 1] = 0;
return strdup(buf);
}
谁能向我解释为什么 String 单词没有添加任何字符?
我很确定这与附加功能有关,谢谢。
【问题讨论】:
-
所以,你的问题不是关于“查找一个单词的所有实例”,而是为什么你的函数
append()不起作用,对吧? -
您真的应该阅读 C 教程! (并培养一些常识。)在我们都告诉过你 cca 之后。在此之前 5 分钟,您无法就地修改常量字符串,您期望给出上一个问题的答案的函数可以做到这一点。您甚至还没有努力了解您正在使用的功能是如何工作的。它不修改字符串本身,而是返回附加到它的指定字符的字符串的副本。
-
显然,如果您要查找某个单词的所有实例,那么您的问题是您没有在 Internet 上进行爬网。
-
对不起,我正在参加考试,刚刚意识到我只需要做 word = append(word, ch);我的错。我有点着急,真的没时间。我懂编程,还有 C,剩下 20 分钟就很难保持头脑清醒。