void SaveInt(int *p,int size,int n,char filename[20]){ FILE *fp; fp=fopen(filename,"wb"); fwrite(p,size,n,fp); fclose(fp); }修改char指向常量
时间: 2024-02-22 08:59:28 浏览: 26
你可以在函数原型中将 `filename` 的类型修改为 `const char*`,表示指向常量的指针,这样就可以避免在函数中修改指针指向的内容。同时,你也需要修改函数中使用 `filename` 的地方,将其修改为只读操作。示例代码如下:
```
void SaveInt(int *p, int size, int n, const char* filename) {
FILE *fp;
int i;
if ((fp = fopen(filename, "wb")) == NULL) {
printf("Cannot open file.\n");
return;
}
for (i = 0; i < n; i++) {
fwrite(&p[i], size, 1, fp);
}
fclose(fp);
}
```
这样修改后,就可以避免在函数中修改 `filename` 指向的内容,从而增强程序的安全性和健壮性。
相关问题
void SaveInt(int *p,int size,int n,char filename[20]) 怎么修改char指向为常量
你可以在函数原型中将 `filename` 的类型修改为 `const char*`,表示指向常量的指针,这样就可以避免在函数中修改指针指向的内容。修改后的函数原型如下:
```
void SaveInt(int *p, int size, int n, const char* filename);
```
同时,你也需要修改函数中使用 `filename` 的地方,将其修改为只读操作,示例代码如下:
```
void SaveInt(int *p, int size, int n, const char* filename) {
FILE *fp;
int i;
if ((fp = fopen(filename, "wb")) == NULL) {
printf("Cannot open file.\n");
return;
}
for (i = 0; i < n; i++) {
fwrite(&p[i], size, 1, fp);
}
fclose(fp);
}
```
这样修改后,就可以避免在函数中修改 `filename` 指向的内容,从而增强程序的安全性和健壮性。
FILE*fp; long cnt=0; char c,filename[20]; void createfile(); createfile(); scanf("%s",filename); fp=fopen(filename,"w"); while(feof(fp))
有几个问题需要修改。
1. `void createfile(); createfile();` 这两行代码没有意义,可以删除。
2. 在使用 `fopen()` 函数打开文件之前,需要先判断文件是否成功打开。可以使用下面的代码:
```c++
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
```
3. `while(feof(fp))` 这行代码不正确。在使用 `feof()` 函数判断文件是否到达结尾时,应该在读取文件内容之后判断,而不是在读取之前。可以使用下面的代码:
```c++
while((c=fgetc(fp))!=EOF)
{
if(isdigit(c))
{
cnt++;
}
}
```
4. 最后,需要在代码末尾关闭文件,释放资源。可以使用下面的代码:
```c++
fclose(fp);
```
修改后的完整代码如下:
```c++
#include<stdio.h>
#include<ctype.h>
int main()
{
FILE *fp;
long cnt=0;
char c,filename[20];
scanf("%s",filename);
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
while((c=fgetc(fp))!=EOF)
{
if(isdigit(c))
{
cnt++;
}
}
fclose(fp);
printf("数字个数:%ld\n",cnt);
return 0;
}
```
注意:以上代码仅供参考,可能还存在其他潜在问题,建议自行测试和调试。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)