【发布时间】:2012-09-16 12:43:27
【问题描述】:
所以我试图获取文本文件中的行数,每个单词在一个新行上。到目前为止我有这个方法...
char * getS(char *fileName){
FILE *src;
if((src = fopen(fileName, "r")) == NULL){
printf("%s %s %s", "Cannot open file ", fileName, ". The program is now ending.");
exit(-1);
}
char *get = ".";
int c = 0;
char ch = 'x';
while(ch!=EOF) {
ch = fgetc(src);
if(ch == '\n') c++;
}
fseek(src, 0, SEEK_SET);
printf("%i",c);
int random = rand() % (c - 1);
return get;
}
由于某种原因,如果我在 while 中间放一个 ch 的 printf,它会给我正确的行数,否则它是 7801729。
另外,我如何制作一个从 0 到行数的随机整数?在 C 中使用 random 的概念现在让我很困惑。
提前致谢!
【问题讨论】:
-
您的意思是在
c的值之后添加一个换行符吗? 即printf("%i\n", c); -
P.S.别忘了
fclose(src)!并且将本地范围的指针返回到临时值可能不是一个好主意。 -
好的,这些值是否与文件中正确的行数相对应? (可能一个接一个)
-
它是关闭的,因为如果文件不以换行符结尾,您当前不认为最后一行是有效的。只有你可以回答你的其他问题。您很可能会使用其他文件名额外调用该函数 3 次。
-
至于您问题的随机部分,请确保使用以下内容初始化随机数生成器:srand(time(NULL));
标签: c pointers random character line