ZHAOBAO511 发表于 2021-4-14 09:03:06

请教字符组合重复数组的问题:

本帖最后由 ZHAOBAO511 于 2021-4-14 11:05 编辑

#include<string.h>

#include<stdio.h>
char gps_num={};
int main(void){
       
        char gps_num1;
        char gps_num2;
        int i;


   
          

          
   for(i=0;i<2;i++)
   {
          
   
   sprintf(gps_num1,"N:%.4f",3447.784756);
   sprintf(gps_num2,"S:%.4f",11335.7959);
   strcat(gps_num, " ");
   strcat(gps_num, gps_num1);
   strcat(gps_num, " ");
   
   strcat(gps_num, gps_num2);
   


   

   
   printf(gps_num);
   gps_num="";
   gps_num1="";
   gps_num2="";
   }
   return 0;

}



我的目的是将两个数组或变量中的数组合到一起,每次组合都一样。例如:1 ,2组合后就是1,2 上面程序打印后第一次是1,2 第二次变成了1,2,1,2,我在下面已清空的,为什么没用?

armok. 发表于 2021-4-14 09:32:54

“请教一个字符组合的问题”标题不合格。请自行修正。

帖子标题必须能充分说明帖子的内容。如你要问AVR的ADC如何才能测量得比较准确,“AVR的ADC如何消除干扰测量得比较准确?”是合格的标题。不合格举例:
    1:小女子冰天雪地裸体跪求解决方法
    2:救命啊...
    3:高手请出招,一个无法解决的AVR问题
    4:一个困扰学习单片机初学者,惊动单片机开发者的难题
    5:AVR的ADC测量   (点评:你到底是问问题,或是有技术心得与大家分享?)

tcm123 发表于 2021-4-14 09:49:46

读写0长度数组?

1a2b3c 发表于 2021-4-14 10:38:23

就是呢,为啥0长度,系统都没有崩掉?

ZHAOBAO511 发表于 2021-4-14 11:05:40

armok. 发表于 2021-4-14 09:32
“请教一个字符组合的问题”标题不合格。请自行修正。

帖子标题必须能充分说明帖子的内容。如你要问AVR的A ...

谢老大提醒,已改。

ZHAOBAO511 发表于 2021-4-14 11:07:07

tcm123 发表于 2021-4-14 09:49
读写0长度数组?

谢谢,我是为了扩展后面要多个,写0也没问题,调试通过,编译环境C-FREE。

ZHAOBAO511 发表于 2021-4-14 11:07:33

1a2b3c 发表于 2021-4-14 10:38
就是呢,为啥0长度,系统都没有崩掉?

崩不崩无所谓,关键是为什么重复。

takashiki 发表于 2021-4-14 11:30:25

ZHAOBAO511 发表于 2021-4-14 11:07
谢谢,我是为了扩展后面要多个,写0也没问题,调试通过,编译环境C-FREE。 ...

调试能通过?你这个编译能通过我能相信,调试堆栈没有溢出(事实上早已溢出只是你选择性的故意忽视)那都是瞎猫碰上死耗子了,至于其他的,你还要问么
你故意写有缺陷的程序,目的是为了什么?考验编译器吗?

albert_w 发表于 2021-4-14 13:53:42

lz你这是搞笑来的呢

实在想研究就放断点看全局变量和两个局部变量各自的地址呗。打印字符串无外乎就是啥时候遇到\0的问题。

t3486784401 发表于 2021-4-14 14:32:32

按照 LZ 的功力,不应该不懂 C 语言啊,

gps_num=""; 这就叫清空了?

长度为0是要写柔性数组不成?就算是柔性数组,也需要实体内存区来支撑

ZHAOBAO511 发表于 2021-4-14 15:00:39

takashiki 发表于 2021-4-14 11:30
调试能通过?你这个编译能通过我能相信,调试堆栈没有溢出(事实上早已溢出只是你选择性的故意忽视)那都 ...

您试试C_FREE再说

ZHAOBAO511 发表于 2021-4-14 15:14:27

t3486784401 发表于 2021-4-14 14:32
按照 LZ 的功力,不应该不懂 C 语言啊,

gps_num=""; 这就叫清空了?


说调试不过的,大家自己看,事实为准。

ZHAOBAO511 发表于 2021-4-14 15:15:10

目前问题已解决,放前面就可以。

t3486784401 发表于 2021-4-14 15:39:14

在 VS2005 下, gps_num= ""; 这句话连编译都不能通过,更不用说警告了。因为:
① 发生了指针到整形的隐式转换;② 发生了整形到字符型的隐式转换。

你的这个编译器如果连警告都不给,怕是已经学废了

youkebing 发表于 2021-4-14 16:08:40

t3486784401 发表于 2021-4-14 15:39
在 VS2005 下, gps_num= ""; 这句话连编译都不能通过,更不用说警告了。因为:
① 发生了指针到整形的 ...

这样写c,真有点看不懂。这个我觉得应该编译不过,当然,也可能编译器能过,其实不管过不过,都不应该这样写吧.

jiki911 发表于 2021-4-14 16:20:29

凡是都要坚持原则,
数组长度不能为零;
这是基本原则,
尤其是C语言,必须坚持原则;
尽管有的编译器,会放行。
但是,还是要坚持原则。

takashiki 发表于 2021-4-15 06:06:33

ZHAOBAO511 发表于 2021-4-14 15:14
说调试不过的,大家自己看,事实为准。

不错不错,分配0字节内存,可以容纳任意多内容。
作为调试,请断点下,打开内存窗口,看看gps_num、 gps_num1、gps_num2是不是越界了。你给它们分配足够的空间,自然就不会出现你楼主位的问题。
从你的签名档以及你的积分来看,我深深的怀疑你的号是不是被盗了

ZHAOBAO511 发表于 2021-4-15 08:16:21

t3486784401 发表于 2021-4-14 15:39
在 VS2005 下, gps_num= ""; 这句话连编译都不能通过,更不用说警告了。因为:
① 发生了指针到整形的 ...

谢谢,有时以事实为准,当然这个只是临时调试试试,后面写程序肯定不会这样。

ZHAOBAO511 发表于 2021-4-15 08:16:45

jiki911 发表于 2021-4-14 16:20
凡是都要坚持原则,
数组长度不能为零;
这是基本原则,


谢谢,临时调试一下。

ZHAOBAO511 发表于 2021-4-15 08:17:17

takashiki 发表于 2021-4-15 06:06
不错不错,分配0字节内存,可以容纳任意多内容。
作为调试,请断点下,打开内存窗口,看看gps_num、 gps_ ...

谢谢,临时调试一下。
页: [1]
查看完整版本: 请教字符组合重复数组的问题: