我必须编写一个程序从一个文件中读取一行文件,然后用读取的文字大写来覆盖它。 这是我的代码fwrite()追加而不是写C
void toUpperCase(char* string) {
int i=0;
while(string[i])
{
string[i]=toupper(string[i]);
i++;
} }
int main(int argc, char** argv) {
if(argc==1)
{
puts("Error: INSERT PATH");
exit(0);
}
char* file=argv[1];
FILE* fd=fopen(file,"r+");
if(fd<0)
{
perror("Error opening file: ");
exit(0);
}
char buffer[30][30];
int i=0;
while(!feof(fd))
{
fscanf(fd,"%s",buffer[i]);
i++;
}
int j=0;
for(j=0; j<i; j++)
{
toUpperCase(buffer[j]);
fwrite(buffer[j],strlen(buffer[j]),1,fd);
}
fclose(fd);
return 0; }
但这个方案追加包含在buffer[][]
,而不是覆盖该文件的话。 如果该文件包含的内容类似pippo pluto foo
那么执行后是pippo pluto fooPIPPOPLUTOFOO
而不是PIPPO PLUTO FOO
。 我在哪里错了?谢谢
我试过但没有成功,问题是我忘了使用fseek()或倒带()。谢谢! –
“w”将文件截断为零 – PSkocik