gpt4 book ai didi

C初学者关于文件

转载 作者:行者123 更新时间:2023-11-30 20:17:20 25 4
gpt4 key购买 nike

编辑:我想输入一个字符串,而不是一个字符。例如,我写 num = 3、string = "hello"和 Month = 10

我希望文件中的输出为 3hello10 。

我试图写入两个值并将其存储在文件中。然而,当我尝试阅读它时,我收到了奇怪的输出。我不确定我做错了哪一部分。

我实际上想将文件中一行中的每个变量连接起来。因此,我使用了 fscanf("%format", var1, ..);

这是我写的.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char **argv) {
int num, month;
char ch;

FILE *fptr;
fptr = fopen("myfile.txt","w");
if(fptr == NULL) {
printf("Error!");
exit(1);
}

printf("Enter ID: ");
scanf("%d",&num);

printf("Enter string: ");
scanf("%s",&ch);

printf("Enter birth of month: ");
scanf("%d", &month);

fprintf(fptr,"%c%d%d", ch, num, month);
fclose(fptr);

return 0;
}

这是我读过的内容

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
char c[1000];
FILE *fptr;

if ((fptr = fopen("myfile.txt", "r")) == NULL) {
printf("Error! opening file");
exit(1);
}

// reads text until newline
fscanf(fptr,"%[^\n]", c);
printf("Data from the file:\n%s", c);
fclose(fptr);

return 0;
}

When executing the write.c program

Enter ID: 111
Enter string: hello
Enter birth of month: 6

执行read.c程序时

Data from the file:
Data from the file:
h18693766136

我是 C 的完全初学者。因此,任何有关我的逻辑或代码的澄清将不胜感激。

最佳答案

要存储字符串,您需要一个 char 数组,而不是 char 类型。所以我将 char 更改为 char 数组。另外,char 数组通过变量名本身指向地址值。所以在使用scanf时不应该添加&。并且您希望按 num-string-month 的顺序输入。所以我改变了fprintf中变量的顺序。

这是 write.c

int num, month;
char ch[100]; //char -> char[]

FILE *fptr;
fptr = fopen("myfile.txt","w");
if(fptr == NULL) {
printf("Error!");
exit(1);
}

printf("Enter ID: ");
scanf("%d",&num);

printf("Enter string: ");
scanf("%s", ch); //&ch -> ch

printf("Enter birth of month: ");
scanf("%d", &month);

fprintf(fptr,"%d%s%d", num, ch, month); // %c -> %s and change variable order change
fclose(fptr);

我修改了 printf 以实现干净的输出。这是read.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
char c[1000];
FILE *fptr;

if ((fptr = fopen("myfile.txt", "r")) == NULL) {
printf("Error! opening file");
exit(1);
}

// reads text until newline
fscanf(fptr,"%[^\n]", c);
printf("Data from the file:%s\n", c); //\n%s -> %s\n
fclose(fptr);

return 0;
}

关于C初学者关于文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com