这是我的代码
#include<stdio.h>
#include<stdlib.h>
#include"boolean.h"
/*
boolean ceksama(char c[20])
{
FILE *f;
int retval;
boolean same=false;
char ccarray[20];
int i,j;
char cc;
f=fopen("filepelanggan.exe","r");
j=0;
while(c[j]!='\0')
{
j=j+1;
}
retval=fscanf(f,"%c",&cc);
while((retval!=EOF)&&(!(same)))
{
i=1;
while(cc!='\0');
{
retval=fscanf(f,"%c",&cc);
ccarray[i]= cc;
i=i+1;
}
if(i!=j)
{
same=false;
}
else
{
if(ccarray[i]=c[j])
{
same=false;
}
else
{
same=true;
}
}
}
fclose(f);
return same;
}
*/
int main()
{
FILE *f;
char nama[20];
int retval;
char c;
int i=1;
/*algoritma*/
f=fopen("customerfile.txt","a");
printf("\nenter your name:");
scanf("%c",&c);
/*
if (!(ceksama))
{*/
while (c=='\n')
{
scanf("%c",&c);
}
while (c!='\n')
{
nama[i]=c;
i=i+1;
scanf ("%c",&c);
}
nama[i]=c;
i=1;
while(nama[i] != '\n')
{
retval=fprintf(f,"%c",nama[i]);
i=i+1;
}
fprintf(f,"%c",'\0');
fprintf(f,"%c",'\n');
/*}
else
{
printf("data has been registered");
}*/
fclose(f);
}
在我的代码中,我想输入一个名称并将其保存到外部文件中,以供以后输入名称时检查该名称是否已存在于外部文件中
main
是我的主程序,上面是检查名称是否已经存在的函数。但是,我在注释模式下创建了检查功能,以便程序可以正常运行。
问题是,当我激活检查功能时,程序仍然可以运行 但 每次我尝试输入任何名称,无论是否已注册,它总是说已注册,因此,我无法将该名称存储在外部文件中
当我停用检查功能(进入评论模式)时,程序正常工作,它将名称存储到外部字符。但是没有检查该名称是否已经存在。因此,该名称可能会被存储两次或更多次。
我编写这个程序的算法是,当输入名称时,它会按字符读取(因为我的老师禁止我们使用 string 或 string.h)。因此我必须按每个字符将它存储到外部文件。查的时候我也是按字符查的,但是也没用
我声明了我自己的boolean.h
最佳答案
要比较ccarray
和c
,您应该使用strcmp
。实际上,您甚至不是在进行比较,而是在进行赋值(“=”而不是“==”)。
我说的是线:
if(ccarray[i]=c[j])
应该是:
if (strcmp(ccarray, c))
如果我很了解你的算法。
关于c - 保存到外部文件,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13564820/