c - fread (.txt) 中的奇怪符号

标签 c fwrite fread

晚上好! 我正在为我的编程课完成一个任务,我必须编写一个程序(使用 Dev-c++)来读取和显示有关 .txt 文件中的项目的信息,然后提供一个选项来搜索和获取有关特定文件的信息(按名称搜索)。然而,每当我编译代码时,它都不会显示书面项目,只会显示大量没有意义的乱码。我查了一下,发现问题可能与读入数据后没有添加二进制0有关。是这样吗?如果这是一个非常简单的问题,我很抱歉,但我对编程真的很陌生,我真的需要一些帮助来理解问题所在:

    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 3

int info()
{
    printf ("Edgars Feldmanis \n");
    printf ("Apl.nr. 131RMC074 \n");
    printf ("8.var. punkts b \n");
    printf ("Blokveida ievade \n \n");
  }
    int main()
    {
        struct preces
    {
       char Nosaukums[15],Cena[10],Razotajs[15],Daudzums[10],Deriguma_termins[15];
     };


 struct preces prece[N];
 FILE *saraksts_st;
 int i,n;
 char x;
 unsigned int garums;

do
{
  printf("Izvelieties darbibu:\n");
  printf("1.Informacija par autoru un variantu\n");
  printf("2.Datu izvade un preces meklesana\n");
  printf("3.Pabeigt darbu\n");
  scanf("%d",&n);
  system("cls");
  if(n==1)info();
  else if(n==2)
  {
    if((saraksts_st=fopen("preces.txt","r"))==NULL) 
  {
    printf("Nevar atvert failu! \n");
    exit(1);
  }

   garums=sizeof(prece[0]);
   for(i=0; i<N && !feof(saraksts_st);i++)
   fclose(saraksts_st);
   printf("\nProduktu saraksts:\n");
   saraksts_st=fopen("preces.txt","r");
   printf("|   Nosaukums    |    Cena    |     Razotajs    |  Daudzums  |     Termins     | \n");


   for(i=0;i<N;i++)
   {printf("%|%15s | %10s | %15s | %10s | %15s |\n",prece[i].Nosaukums,prece[i].Cena,prece[i].Razotajs,prece[i].Daudzums,prece[i].Deriguma_termins);
    };

    printf("\nIevadiet meklejamas preces nosaukumu:\n");
    scanf("%s",&x);
    printf("|   Nosaukums    |    Cena    |     Razotajs    |  Daudzums  |     Termins     | \n");

    for(i=0;i<N;i++)
      {
        if(prece[i].Nosaukums=="x")
       {printf("|%15s | %10s | %15s | %10s | %15s |\n",prece[i].Nosaukums,prece[i].Cena,prece[i].Razotajs,prece[i].Daudzums,prece[i].Deriguma_termins);
        };  
      }
   getch();
   return 0;
   } 

   }
while(n!=3);
system("pause");
return 0;
}

最佳答案

不知道是否可以用%s指定printf中显示的字符数。该例程只是打印出数据,直到找到零字符为止。只需将字符串的最后一个字符设置为“\0”,看看是否可以解决问题。

关于c - fread (.txt) 中的奇怪符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154119/

相关文章:

c - 通过前缀在树中查找单词

c++ - Ogre3D 和 SkyX - 无法让 SkyX 正常工作

iphone - 从 iphone 中的 .wav 文件读取时数据为空?

c++ - 在 C++ 中使用 fread()、fwrite() 和 malloc

c++ - 将 C/C++ 代码从 Linux 转移到 Windows 真的很慢

c - 在 C 语言中如何按顺序将文件写入磁盘?

linux - 文件如何映射到进程地址空间?

c - 使用指针写入/读取文件,C

c - fwrite 没有表现得像它应该的那样

具有 c/c+ 模式的 PHP fopen