C文件处理时出了个小BUG求帮忙!

libinden71 2016-05-14 08:56:50
void capitalization(FILE *p)
{

char array[100] = { 0 };
char str[100] = { 0 };
while (!feof(p))
{
fgets(array, sizeof(array), p);
for (int i = 0; i < strlen(array); i++)
{
if ((isalpha(array[i])))
{
str[i] = toupper(array[i]);
}
else
{
str[i] = array[i];
}
}
printf("%s", str);
}
}
;
循环一次就谈出来!可以点忽略,但是不明白为什么会这样,找不到原因 求帮忙看看!
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
libinden71 2016-05-15
  • 打赏
  • 举报
回复
多谢各位!已经解决!(文件问题)!
自信男孩 2016-05-15
  • 打赏
  • 举报
回复

 1   #include <stdio.h>                                                                                                                                                                                     
    1 #include <ctype.h>
    2 #include <string.h>
    3  
    4 void  capitalization(FILE *p);
    5  
    6 int main(void)
    7 {
    8     FILE *fp = fopen("1.txt", "r");
    9     if (NULL == fp) {
   10     |   fprintf(stderr, "Open %s Error", "1.txt");
   11     |   return -1;
   12     }
   13     capitalization(fp);
   14     return 0;
   15 }
   16  
   17  
   18  
   19  
   20 void  capitalization(FILE *p)
   21 {
   22     int i;
   23     char array[100] = { 0 };
   24     char str[100] = { 0 };
   25  
   26     while (!feof(p))
   27     {
   28     |   fgets(array, sizeof(array), p);
>> 29     |   for (i = 0; i < strlen(array); i++)
   30     |   {
   31     |   |   if ((isalpha(array[i])))
   32     |   |   {
   33     |   |   |   str[i] = toupper(array[i]);
   34     |   |   }
   35     |   else
   36     |   {
   37     |   |   str[i] = array[i];
   38     |   }
   39     }
   40     printf("%s", str);
   41     }
   42 }

在Linux下测试了一下你的代码,没发现问题;我打开的文件里的数据要么是26个英文字符,要么是数字;可以将字母小写变大写,其他不变; 建议楼主查看一下要打开的文件;
paschen 2016-05-14
  • 打赏
  • 举报
回复
点重试——中断,断下后通过调用堆栈、变量窗口观察分析原因
辰岡墨竹 2016-05-14
  • 打赏
  • 举报
回复
其实我也遇到过这个问题,可能是微软库的bug吧。isalpha((unsigned char)array[i]) 应该就可以了。应该是你传入的字符有非ASCII字符,所以超过了127。由于MS的实现char是signed的。所以就整形提升以后就成了负数了。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧