当前位置:  技术问答>linux和unix

fprintf(或printf)输出为什么得到几个变量结果的值乱串,怪!

    来源: 互联网  发布时间:2015-12-30

    本文导语:  下面代码编译无问题,但运行结果古怪,比如说输入为: name 张三丰 moblile 133888666  homephone 01088899 home address 北京海淀区 结果显示为:6,,?,北淀区 (我的系统是FC6_X86_64) #include  #include  #include  int main() { char *my_q...


下面代码编译无问题,但运行结果古怪,比如说输入为:
name
张三丰
moblile
133888666 
homephone
01088899
home address
北京海淀区


结果显示为:6,,?,北淀区

(我的系统是FC6_X86_64)



#include 
#include 
#include 


int main() {

char *my_query, *tmp_name, *tmp_moblile, *tmp_homephone, *tmp_home;
printf(" *****************************n Please input QUERY statement !n ******************************n");
printf("namen");
scanf("%s", &tmp_name);


printf("moblilen");
scanf("%s", &tmp_moblile);

printf("homephonen");
scanf("%s",&tmp_homephone);

printf("home addressn");
scanf("%s", &tmp_home);


 fprintf(stderr,"%s,%s,%s,%sn",&tmp_name,&tmp_moblile,&tmp_homephone,&tmp_home);

       }

|
你的程序有错误
char *my_query, *tmp_name, *tmp_moblile, *tmp_homephone, *tmp_home;

scanf("%s", &tmp_name);等其他三处
----------------------------------------------------
程序运行时指针
my_query, tmp_name, tmp_moblile, tmp_homephone, tmp_home
所指向的地方是随机的.
比如说my_query, tmp_name, tmp_moblile, tmp_homephone, tmp_home刚好是相邻的
你就肯定的不到正确的结果了

就算你把scanf("%s", &tmp_name);改为正确形式scanf("%s", tmp_name);
也得不到你想要的结果

========================================
正确的应该是这样的程序

#include 
#include 
#include 


void main() {

char tmp_name[7], tmp_moblile[11], tmp_homephone[8], tmp_home[64];

printf(" *****************************n Please input QUERY statement !n ******************************n");
printf("namen");
scanf("%s", tmp_name);


printf("moblilen");
scanf("%s", tmp_moblile);

printf("homephonen");
scanf("%s",tmp_homephone);

printf("home addressn");
scanf("%s", tmp_home);


 fprintf(stderr,"%s,%s,%s,%sn",tmp_name,tmp_moblile,tmp_homephone,tmp_home);
}

不过还要注意输入的长度不要定义的最大长度.





|
这是典型的野指针问题(建议你看看这方面的问题).
即是:一个指针在没有指向确实的地址前,不能够通过scanf()对它进行赋值.

|
char *my_query, *tmp_name, *tmp_moblile, *tmp_homephone, *tmp_home;
-->
char my_query[100],.....

数组没分配空间

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有关fork和fprintf的问题
  • 关于fprintf,write的区别
  • 帮我看看fprintf这个函数吧,谢谢
  • 求助 关于 fprintf 是否泄漏内存?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3