c# 为什么在文件中写入和保存字符串和整数不起作用?[已关闭]

olmpazwi  于 2023-01-07  发布在  C#
关注(0)|答案(1)|浏览(166)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
1小时前关闭。
Improve this question
我需要这个代码的帮助。你看,它接受字符串和整数这样的输入,并将它们保存在两个数组中。这两个数组应该被写入一个名为"Lagerverwaltung. text"的文件中。然而,它只打印了一个0,其他什么都没有打印到文件中。谢谢。

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

int main(){
    char artnr[50],menge[50],me[50],neu[50],date[50];
    int zahl, calcam, id, sub,amount;
    int greatlen = 0;
    int result = 0;
    char str[50][50][50];
    int mengen[10];
    int a = 1;
    int s = 0;
    while(a > 0){
     FILE* fp;
     fp = fopen("Lagerverwaltung.txt", "w");
     printf("Geben sie eine Zahl ein:");
     scanf("%d", &zahl);
     if(zahl == 1){
       printf("Geben sie ein:\nArtikelnr.:");
       scanf("%s",&artnr);
       strcpy(str[s][0],artnr);
       printf("Menge:");
       scanf("%d",&mengen[greatlen]);
       printf("Mengeneinheit:");
       scanf("%s",&me);
       strcpy(str[s][1],me);
       printf("Datum:");
       scanf("%s",&date);
       strcpy(str[s][2],date);
     }
     fputs(str[greatlen][0], fp);
     fprintf(fp, "%d", mengen[greatlen]);
     fputs(str[greatlen][1], fp);
     fputs(str[greatlen][2],fp);

     fclose(fp);
     s =s+1;
     greatlen = greatlen +1;

  }
    return 0;
}

应该有一行整数和字符串写入文件。

kdfy810k

kdfy810k1#

"w"参数的fopen打开文件并 * 丢弃现有内容 *。这意味着在每次循环迭代中,您将丢弃之前编写的内容。由于a永远不会变为0,因此结束程序的唯一选择是中止它,并且您将在程序等待输入时执行此操作。这是在它已经丢弃任何文件内容之后但是在它已经写入新内容之前。
可能的修复方法:

  • "a"打开文件以附加到它
  • 在循环之前打开文件并在循环之后关闭文件(同时提供退出循环的方式)。

此外,固定字符串扫描线,如

scanf("%s",&artnr);

那应该是

scanf("%s", artnr);

每一个优秀的编译器都会警告你。

相关问题