我使用fopen
中的C
代码来读取文本文件。然后我使用fscan
代码检查该文件中应该是1< = N< = 5的整数。
我想要的是当文本文件中包含字母时,向我显示一条警告消息,指出文件中至少有一个字母。但是,如果它没有获得另一个代码。
我该怎么做? 我想在fscanf
命令之后和if
之前放置代码
这是代码
FILE * fp; //declare fp as a "fopen" command.
fp = fopen ("xxx.txt", "r"); // opening the file "xxx.txt"
if (fp == NULL) // error here if there was a problem!
{
printf("Opening 'xxx.txt file failed: %s\n",strerror(errno)); // No such file or directory
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
fscanf(fp,"%d",&num); // here goes the fscanf() command
if(num<1 || num>5) // set restrictions to integer
{
printf("The number must be 1<= N <= 5",strerror(errno)); // error with the integer number
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
// some code here
}
}
答案 0 :(得分:1)
在扫描num之后插入这应该读取文件的其余部分并报告是否找到一个字母并返回1.它首先获取文件中的位置,以便稍后返回该位置并继续读取整数文件。如果找到一个字母,则返回1.如果没有找到字母,则将文件位置重置回扫描num后的位置。
int readch = 0;
long int filepos = 0L;
filepos = ftell ( fp); // get the file position
while ( ( readch = fgetc ( fp)) != EOF) { // read each character of the file
if ( isalpha ( readch)) { // check each character to see if it is a letter
printf ( "File contains letters\n");
fclose ( fp);
return 1;
}
}
fseek ( fp, filepos, SEEK_SET); // move file position back to where it was after reading num