C语言 10几行短程序 查错

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:55:31
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
FILE *fp;
char str[100],filename[10];
int i=0;
if((fp=fopen("a.txt","w"))==NULL)
{
printf("can not open file\n");
exit(0);
}
printf("enter a string:\n");
gets(str);
while(str[i]!='!')
{
if (str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("a.txt","r");
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);

}
//no pointer assignment

看了你的程序,是实现把字符串中小写字母变为大写字母的功能。
注意以下几点,这个程序是可以用的。
1。char str[100]所以你输入的字符串长度不能超过它,准确地说不能超过99个字符。
2。filename[10] 你程序中没有使用它,不必要定义。
3。最重要的一点str[i]!='!' 所以你输入的字符串中必须含有!这个字符,否则程序会由于i++产生对str的越界访问。

所以你输入的字符必须是类似于:abs!, 23ertW!234.
程序只会把第一个!前面的小写字母转换成大写字母.
如果你不想以!为结尾,可以把str[i]!='!'改为str[i]!=0或str[i]!='\0',就可以了.
大概是以上说的两种情况.

程序没有问题,我用的编译器是 win-tc,编译可以通过。

LZ把具体的出错信息都贴出来,让大家看看。

你这是作业题的标准答案,我早就试过了,绝对没问题。

这个是文件指针的问题吧,可能打开的文件是否存在等的问题

还有就是你是不是用的TC啊,换成VC应该就没问题了,我以前也遇到过类似的问题