一个新的空文件:
touch /file.txt
读取。打印。
fp = fopen("/file.txt", "r");
char text[1000];
int i=0;
while(!feof(fp)){
text[i++] = getc(fp);
}
text[i]='\0';
printf("%s\n", text);
结果:
ÿ
EXTRA INFO :如果file.txt有很多行..它会在它的最底部附加那个奇怪的字符。所以也许并不是每个“while循环”都会发生的事情。
答案 0 :(得分:6)
如果您使用的是ISO 8859-15或8859-1代码集,则ÿ(带有DIAERESIS的LATIN SMALL LETTER,Unicode中的U + 00FF)代码为255 10 或0xFF。将EOF存储在数组中时,它将转换为ÿ。
不要将EOF存储在char
中。请记住,getchar()
会返回int
,而不是char
。它必须能够返回可以存储在unsigned char
中的每个值,加上EOF是负数(通常但不一定是-1
)。
并且,如评论中所述,while (!feof(file))
is always wrong。这只是另一个原因。
此代码或多或少是固定的。如果无法打开文件,它应该报告错误。请注意,它还可以确保您不会溢出缓冲区。
FILE *fp = fopen("/file.txt", "r");
if (fp != 0)
{
char text[1000];
int i=0;
int c;
while ((c = getc(fp)) != EOF && i < sizeof(text)-1)
text[i++] = c;
text[i]='\0';
printf("%s\n", text);
fclose(fp);
}
另见while ((c = getc(file)) != EOF)
loop won't stop executing。
答案 1 :(得分:5)
ÿ
是代码页中的字节255,是EOF
强制转换为char
的常量feof
。您不必使用getc
,而是必须将int
的返回值存储到EOF
中,然后将其与while (1) {
int c = getc(fp);
if (c == EOF) {
break;
}
text[i++] = c;
}
进行比较,这里很简单 - 阅读示例(请注意,您还必须进行边界检查):
driver.findElement(By.id("jobDate")).click();
Thread.sleep(5000);
Calendar calendar = new GregorianCalendar();
int currentDate = calendar.get(Calendar.DAY_OF_MONTH); // get date field
//System.out.println("date is"+currentDate);
driver.findElement(By.xpath("//td[contains(text(),'28')]")).click();
//select date