为什么调用fgets从file.txt读取不到内容?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char *str = (char*)malloc(100);
char string[] = "this is a test";
if( (fp=fopen("file.txt", "w+")) == NULL)
{
printf("open file.txt failed!\n");
exit(0);
}
//fwrite(string, strlen(string), 1, fp);
//fseek(fp, 0, SEEK_SET);
while(!feof(fp))
fgets(str, strlen(string)+1, fp); //?
fputs(str, stdout);
fputc('\n', stdout);
printf("%s\n", str);
while(*str)
{
char ch = *str;
if(ch>='a' && ch<='z')
*str = ch - 32;
fputc(*str, fp);
str++;
}
fclose(fp);
return 0;
}
file.txt内容为:
this is a test
[解决办法]
"w+"
create text file for update, discard previous contents if any
[解决办法]
while (!feof(fp))
{
fgets(str, sizeof(string), fp);
printf("%s\n",str);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char *str = (char*)malloc(100);
char string[] = "this is a test";
if( (fp=fopen("file.txt", "a+")) == NULL)
{
printf("open file.txt failed!\n");
exit(0);
}
fwrite(string, strlen(string), 1, fp); // 执行完fwrite后必须用 fclose(fp)关闭把数据刷新进去。
fclose(fp);
fp=fopen("file.txt", "a+");
//fseek(fp, 0, SEEK_SET);
while(!feof(fp))
{
fgets(str, strlen(string)+1, fp);
fputc('\n', fp);
}
fputs(str, stdout);
fputc('\n', stdout);
printf("%s\n", str);
while(*str)
{
char ch = *str;
if(ch>='a' && ch<='z')
*str = ch - 32;
fputc(*str, fp);
str++;
}
fclose(fp);
return 0;
}