C语言文件写入txt中逻辑有问题,,求大神帮忙看一下,谢谢

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void newusr();
void newusr()
{
FILE*fp;
char username;
char password;
if((fp=fopen("guanliyuan.txt","ab")) == NULL){
printf("File open error!\n");
exit(0);
}
printf("Enter the new usr name and password:");
scanf("%s%s",username,password);
fprintf(fp,"%s %s\n",username,password);
printf("OK");
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}
int main(void)
{
newusr();
return 0;
}

第1个回答  推荐于2016-04-24
#include <stdio.h>
#include <stdlib.h>
void newusr();
void newusr()
{
FILE *fp;
char username[32] = {0};
char password[32] = {0};
if((fp=fopen("guanliyuan.txt","ab")) == NULL){
printf("File open error!\n");
exit(0);
}
printf("Enter the new user name and password!\n\n\n\n");
printf("user:");
scanf("%s",username);
printf("password:");
scanf("%s",password);
fprintf(fp,"%s %s\n",username,password);
printf("OK");
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}
int main(void)
{
newusr();
return 0;
}追问

谢谢,,很有用,,那个,,你能给我解释一下为什么么?

追答

内存的原因
char是1个字节
char username[32] = {0};是一个32个字节的数组并初始化

就例如:体积小的装不下体积大的东西一样
所以软件会挂掉
char username[32]是代表开辟了32个字节(可以假设为32立方)
char 是1个字节(假设为1平方)
一个字节一个字符例如"admin"
要占用6个字节(admin 是5个 和一个结束换行符号...结束换行别去纠结肯定是6个字符)
而你只申请了1个字节(假设1平方)
你如何装进去6个字节
so 你的程序有问题!

本回答被提问者和网友采纳
第2个回答  2018-04-18
ㅇㅅㅇ42ㅈㅅ

c语言读取txt文件数据时最后有一串乱码怎么办
原因很简单:把while(!feof(fp))中的!feof(fp)改成1,然后在fscanf那一句后面加一句if(feof(fp)) break;就可以了。因为feof这个函数要在逻辑上紧跟在“读操作”语句后才能正确生效,而你的写法在第一次进入while时还没有读文件,feof(fp)判断什么?就是这里造成了最后文件越界了还当作正常数据在处...

我在编写C语言代码的时候,有时候代码会有一些逻辑上的错误,就是代码可...
老师让你输出:1 你写个程序输出:2 你的代码当然编译不会出错。而且可以很好的运行,但是结果就是2.永远都不会是1,因为你就让他输出的2,结果怎么会是1呢。开发人员都知道:再也没有比修改语法错误再简单的了 直接看看编译器报的错,看看第几行,修改。OK。。太简单了 逻辑错误就得调试了 这个...

c语言编程 的时候有逻辑错误 但是死活找不出来 求大神解答
InitStack(&park);InitStack(&temp);你这是要传的是指针的指针么?

C语言帮忙看下这个程序,当他输入汉字时会额外输出一边“含有非法字符...
if(stu[i].name[x]>='0')

求C语言编程大佬帮忙!这道题的逻辑哪里出错了!找了几个小时了没搞明白...
思路如下:这个问题实际上是生成0~9的全排列,然后根据每个数在格子里的位置判断每个排列是否符合要求。百度了一个全排列算法稍做修改,得到以下代码,输出的有效方案数是1580,在我这里输出大约在70ms到100ms左右。百度这个代码排版垃圾得无以复加,vs里面排得好好复制过来全乱,不再重排了。另外,生成...

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()...

C语言编程实现文件的输入与输出出错出现笑脸
喔? 这个比烫烫烫烫烫烫烫烫烫烫烫烫烫烫 更好笑。。。while ((ch = getchar() != '\\n')) ,结合优先级问题,你懂的。 记住 = 的结合优先级低到爆了,一切需要=的地方能括号就括号。 XD

c语言中这到提结果思路怎么分析的哪位大神帮帮忙
覆盖了a中原来存储的数值;3.将变量t中的数值复制存储在变量b中;也就是说这三条语句组合起来完成了将a和b变量中保存的数值进行交换的目的。其次,循环体中最后一句c--;意思就是说每次将c中的数值进行减一,即c=c-1;通过以上逻辑你走一遍程序,很容易就看懂了,程序输出1,2,1 ...

用C语言求根问题,请大家帮忙看下,我觉得程序没错,但就是运行不对...
程序没有错误,是逻辑错误。我运行了没有错误。include<stdio.h>#include <math.h>#define f(x) 2*pow(x,3)-4*pow(x,2)+3*x-6int main(){ double x1,x2,x0; scanf("%lf%lf",&x1,&x2); x0=(x1+x2)\/2; while (f(x0)>1e-3) { if (f(x0)*f(x1)<0) {...

c语言中为什么会出现这种情况。求大神告诉。
运行时 错误 说明语法没问题 但代码逻辑出现问题,比如说 非法访问 数组溢出等 检查代码

相似回答