下列程序将数字字符串写入文件”data.txt“ #include<stdio.h> #include<string.h> int main(void){ FILE *fp; char buf[11] = "0123456789"; fp = 4 分 ; if( 2 分 ) { 4 分 ; fclose(fp); } else{ printf("unable to open the file !\n"); } return 0; }
时间: 2023-12-31 17:04:15 浏览: 296
下面是修改过的程序:
```
#include <stdio.h>
#include <string.h>
int main(void) {
FILE *fp;
char buf[11] = "0123456789";
fp = fopen("data.txt", "w");
if (fp != NULL) {
fwrite(buf, sizeof(char), strlen(buf), fp);
fclose(fp);
} else {
printf("unable to open the file !\n");
}
return 0;
}
```
主要修改如下:
1. 打开文件的方式应该是写入("w"),而不是 4 分。
2. 在成功打开文件后,使用 fwrite 函数将数字字符串写入文件。
3. 在完成文件操作后,需要关闭文件。
相关问题
2.从键盘输入姓名,存入文件data.txt中。如果文件中该姓名已存在,则显示文件已存在的相应信息;再次输入其他姓名,若文件中没有该姓名,则将其存入文件中,请填空。 #include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { FILE *fp; int flag=0; char name[20],data[20]; if((fp=fopen("data.txt", ① ))==NULL) { printf("Cannot open file.\n"); exit(1); } do { printf("Please input name:"); ② ; if(strlen(name)==0) break; else strcat(name,"\n"); rewind(fp); flag=1; while(flag&&((fgets(data,20,fp)!=NULL))) if(strcmp(data,name)==0) flag=0; if(flag) ③ ; else printf("\tThis name existed!\n"); }while(ferror(fp)==0); fclose(fp); return 0; }
以下是代码中缺失的部分:
① 应填写 "a+",即以追加方式打开文件,如果文件不存在则创建。
② 应填写 `fgets(name, 20, stdin)`,即从标准输入(键盘)读入字符串,存储到 `name` 数组中,最多读取 19 个字符。
③ 应填写 `fputs(name, fp)`,即将 `name` 字符串写入到文件中。
修改后的程序如下:
```C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
FILE *fp;
int flag = 0;
char name[20], data[20];
if ((fp = fopen("data.txt", "a+")) == NULL) {
printf("Cannot open file.\n");
exit(1);
}
do {
printf("Please input name:");
fgets(name, 20, stdin);
if (strlen(name) == 0) {
break;
} else {
strcat(name, "\n");
}
rewind(fp);
flag = 1;
while (flag && ((fgets(data, 20, fp) != NULL))) {
if (strcmp(data, name) == 0) {
flag = 0;
}
}
if (flag) {
fputs(name, fp);
} else {
printf("\tThis name existed!\n");
}
} while (ferror(fp) == 0);
fclose(fp);
return 0;
}
```
建议:在文件操作中,要注意文件打开模式,如果是写入模式,会覆盖原有的文件内容,如果是追加模式,则会在原有文件内容的基础上添加新的内容。在读取文件内容时,要注意使用 `rewind` 函数将文件指针移动到文件开头位置,否则会出现读取错误的情况。
#include <stdio.h>#include <stdlib.h>#include <string.h>unsigned int ReadTemperature(); // 假设有一个函数可以读取温度值int main() { unsigned int temp = 0; unsigned char tempt[15] = ""; // 定义一个足够大的数组来存储转换后的温度值 unsigned char i, j; while (1) { temp = ReadTemperature(); sprintf((char *)tempt, "%.1f", temp); // 将温度值转换成字符类型,并存储到tempt数组中 init_lcd(); write_cmd(0x80); // 设置光标位置为第一行第一列 for (i = 0; i < strlen((char *)tempt); i++) { write_data(tempt[i]); // 逐个将tempt数组中的字符写入lcd屏幕中 } } return 0;}为什么我的值一直是0.0
如果你读取到的温度值一直是0.0,可能有以下几个原因:
1. 读取温度值的函数有问题。你需要检查一下ReadTemperature()函数的实现,确保其能够正确地读取温度值。
2. 温度值的类型不正确。在代码中,我们将温度值转换成了浮点型,并使用了"%.1f"格式化字符串将其转换成了带有1位小数的字符型。如果你读取到的温度值是整型,那么sprintf()函数可能无法正确转换,导致tempt数组中的值一直是空字符串。
3. LCD显示有问题。你需要检查一下LCD显示的代码是否正确,是否能够正确地将tempt数组中的值写入到屏幕上。你可以尝试先将tempt数组中的值打印到控制台上,查看其是否正确。
综上所述,你需要仔细检查每个环节的代码,确定问题出在哪里。如果还有问题,可以提供更多的代码和详细的错误信息,我们一起来排查。
阅读全文