#include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char a[20][20]; int i,j; FILE* fp=fopen("D:\\NewFound\\wenjian a.txt","r+"); //判断 if(fp==NULL){ printf("没有该文件!"); return 0; } for(i=0;i<=19;i++){ fscanf(fp,"%s",a[i]); for(j=0;j<=19;j++){ if((a[i][j]>=65&&a[i][j]<=90)||(a[i][j]>=97&&a[i][j]<=122)){ printf("%c",a[i][j]); } else{ break; } } printf("\n"); if(((a[i]>=65)+(a[i]<=90)<2)+((a[i]>=97)+(a[i]<=122)<2)==0){ continue; } } }为什么这段代码执行后相比文本文件会有多余的字母
时间: 2024-04-16 22:28:47 浏览: 29
根据您提供的代码,问题可能出在文件读取的部分。在代码中,您使用了fscanf函数来读取文件中的每个单词,然后进行处理并打印出其中的字母。
然而,fscanf函数默认以空格作为分隔符来读取文件中的内容。如果文件中存在多余的空格、换行符或其他非字母字符,那么这些字符也会被读取并输出。
为了解决这个问题,您可以使用fgets函数来逐行读取文件内容,然后使用字符串处理函数(如strtok)将每行分割为单词。这样可以更精确地控制读取的内容,避免读取到多余的字符。
另外,您在判断是否为字母时使用了ASCII码范围,但这并不准确。建议使用ctype.h头文件中提供的isalpha函数来进行判断,它能更可靠地判断字符是否为字母。
下面是修改后的代码示例:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char a[20][20];
int i, j;
FILE* fp = fopen("D:\\NewFound\\wenjian a.txt", "r+");
// 判断
if (fp == NULL) {
printf("没有该文件!");
return 0;
}
for (i = 0; i <= 19; i++) {
fgets(a[i], sizeof(a[i]), fp);
char* word = strtok(a[i], " \n");
while (word != NULL) {
for (j = 0; j < strlen(word); j++) {
if (isalpha(word[j])) {
printf("%c", word[j]);
}
}
printf("\n");
word = strtok(NULL, " \n");
}
}
fclose(fp);
return 0;
}
```
这样修改后,每行将被逐个单词地读取,然后进行处理和打印。同时,使用isalpha函数来判断字符是否为字母,确保只输出字母字符。
请您尝试使用修改后的代码,看看是否能够避免多余的字母输出。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)