user-0 提问: 关于数字格式的转化

回复:
user: user-1
content: 这是转换说明符的问题，各种输出格式可以参考这个博客 http://blog.csdn.net/libing403/article/details/72934198

user: user-0
content: 问题已解决，谢谢大家！

user: user-0
content: 引用 11 楼 zhao4zhong1 的回复:[quote=引用 10 楼 qq_38115230 的回复:] [quote=引用 7 楼 zhao4zhong1 的回复:] #include <stdio.h> #include <string.h> char s[2][11]={ "9.36849+0", "5.87654+5", }; double d[2]; int i; char *p; int main() {     for (i=0;i<2;i++) {         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         }         sscanf(s[i],"%lf",&d[i]);         printf("%d %s %e\n",i,s[i],d[i]);     }     return 0; } //0 9.36849E+0 9.368490e+000 //1 5.87654E+5 5.876540e+005 // 非常感谢您的回答，对我很有帮助，只是识别的字符不仅有“+”还有“-”[/quote]         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         } else {             p=strchr(s[i],'-');             if (p) {                 memmove(p+1,p,strlen(p)+1);                 *p='E';             }         } [/quote]非常感谢您赵老师！再问个其他的问题，怎样批量处理多个数组？比如说，我现在有10个数组，都要插入E，有没有什么方法同时处理？还是只能一个数组一个数组地插入E ？

user: user-0
content: 引用 15 楼 paschen 的回复:引用 13 楼 qq_38115230的回复:[quote=引用 12 楼 paschen 的回复:] [quote=引用 8 楼 qq_38115230 的回复:] ~[quote=引用 6 楼 paschen 的回复:] [quote=引用 3 楼 qq_38115230 的回复:] [quote=引用 1 楼 paschen 的回复:] printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个[/quote]谢谢你的解答~我再详细说一下，从文件里读一些数据，我把文件的内容截图发到楼下，里面的数不是科学记数法的形式，少了中间的E，c语言无法识别这样的数据，只能当成字符串，但是我想把他转化成可以处理的数据格式如整形浮点型，因为要对这些数据做一些运算处理，所以我的思路是将这些数字中间加上E，可是我不太会这个。[/quote]  维修建议，记事本有个功能叫替换，将+换成 E+，将-换成 E-[/quote]额……要在程序里替换……[/quote] 程序中替换也一样，整体读入，然后按我上面说的替换，不需要先转换成数值  字符串替换的函数网上大把[/quote]有道理！这部分代码我是这样写的（读取的数据还是和截图一样），运行不出来，可不可以帮我看一下哪里的错误？因为我读取的时候是一下子读一行数据到一个二维数组data[][]中，所以我引用字符串是通过引用data[i]，我感觉这里出了问题  for(i=0;i<300;i++)     {     fgets(data[i],512,ip);     *m=data[i];       m=strstr(data[i],'+');         if (m) {         memmove(m+1,m,strlen(m)+1);         *m="E+";             } else  {             m=strchr(data[i],'-');             if (m) {                 memmove(m+1,m,strlen(m)-1);                 *m="E-";             }         }         }

user: user-2
content: 只能一个数组一个数组地插入E

user: user-3
content: 引用 13 楼 qq_38115230的回复:引用 12 楼 paschen 的回复:[quote=引用 8 楼 qq_38115230 的回复:] ~[quote=引用 6 楼 paschen 的回复:] [quote=引用 3 楼 qq_38115230 的回复:] [quote=引用 1 楼 paschen 的回复:] printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个[/quote]谢谢你的解答~我再详细说一下，从文件里读一些数据，我把文件的内容截图发到楼下，里面的数不是科学记数法的形式，少了中间的E，c语言无法识别这样的数据，只能当成字符串，但是我想把他转化成可以处理的数据格式如整形浮点型，因为要对这些数据做一些运算处理，所以我的思路是将这些数字中间加上E，可是我不太会这个。[/quote]  维修建议，记事本有个功能叫替换，将+换成 E+，将-换成 E-[/quote]额……要在程序里替换……[/quote] 程序中替换也一样，整体读入，然后按我上面说的替换，不需要先转换成数值  字符串替换的函数网上大把

user: user-0
content: 引用 12 楼 paschen 的回复:引用 8 楼 qq_38115230 的回复:~[quote=引用 6 楼 paschen 的回复:] [quote=引用 3 楼 qq_38115230 的回复:] [quote=引用 1 楼 paschen 的回复:] printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个[/quote]谢谢你的解答~我再详细说一下，从文件里读一些数据，我把文件的内容截图发到楼下，里面的数不是科学记数法的形式，少了中间的E，c语言无法识别这样的数据，只能当成字符串，但是我想把他转化成可以处理的数据格式如整形浮点型，因为要对这些数据做一些运算处理，所以我的思路是将这些数字中间加上E，可是我不太会这个。[/quote]  维修建议，记事本有个功能叫替换，将+换成 E+，将-换成 E-[/quote]额……要在程序里替换……

user: user-3
content: 引用 8 楼 qq_38115230 的回复:~引用 6 楼 paschen 的回复:[quote=引用 3 楼 qq_38115230 的回复:] [quote=引用 1 楼 paschen 的回复:] printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个[/quote]谢谢你的解答~我再详细说一下，从文件里读一些数据，我把文件的内容截图发到楼下，里面的数不是科学记数法的形式，少了中间的E，c语言无法识别这样的数据，只能当成字符串，但是我想把他转化成可以处理的数据格式如整形浮点型，因为要对这些数据做一些运算处理，所以我的思路是将这些数字中间加上E，可是我不太会这个。[/quote]  维修建议，记事本有个功能叫替换，将+换成 E+，将-换成 E-

user: user-2
content: 引用 10 楼 qq_38115230 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] #include <stdio.h> #include <string.h> char s[2][11]={ "9.36849+0", "5.87654+5", }; double d[2]; int i; char *p; int main() {     for (i=0;i<2;i++) {         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         }         sscanf(s[i],"%lf",&d[i]);         printf("%d %s %e\n",i,s[i],d[i]);     }     return 0; } //0 9.36849E+0 9.368490e+000 //1 5.87654E+5 5.876540e+005 // 非常感谢您的回答，对我很有帮助，只是识别的字符不仅有“+”还有“-”[/quote]         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         } else {             p=strchr(s[i],'-');             if (p) {                 memmove(p+1,p,strlen(p)+1);                 *p='E';             }         }

user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:#include <stdio.h> #include <string.h> char s[2][11]={ "9.36849+0", "5.87654+5", }; double d[2]; int i; char *p; int main() {     for (i=0;i<2;i++) {         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         }         sscanf(s[i],"%lf",&d[i]);         printf("%d %s %e\n",i,s[i],d[i]);     }     return 0; } //0 9.36849E+0 9.368490e+000 //1 5.87654E+5 5.876540e+005 // 非常感谢您的回答，对我很有帮助，只是识别的字符不仅有“+”还有“-”

user: user-0

user: user-0
content: ~引用 6 楼 paschen 的回复:引用 3 楼 qq_38115230 的回复:[quote=引用 1 楼 paschen 的回复:] printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个[/quote]谢谢你的解答~我再详细说一下，从文件里读一些数据，我把文件的内容截图发到楼下，里面的数不是科学记数法的形式，少了中间的E，c语言无法识别这样的数据，只能当成字符串，但是我想把他转化成可以处理的数据格式如整形浮点型，因为要对这些数据做一些运算处理，所以我的思路是将这些数字中间加上E，可是我不太会这个。【还有您刚才提到的字符串版本输出科学记数法的格式应该不行吧？】

user: user-3
content: 引用 3 楼 qq_38115230 的回复:引用 1 楼 paschen 的回复:printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少  这里我不是很懂你要表达什么意思  如果你不是在输出的时候转换，可以用字符串版本的，仍然是用%e，它是按科学技术法输出  其次，你说有很多数，很多数就循环操作就行，没有可以一次帮你全部转换掉的函数，除非你自己写一个

user: user-2
content: 浮点数格式 http://bbs.csdn.net/topics/390676437

user: user-4
content: 引用 3 楼 qq_38115230 的回复:引用 1 楼 paschen 的回复:printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少 要看读到是什么数据？另外，想转换成科学计数法，以字符串的形式输出可以用snprintf或sprintf

user: user-2
content: #include <stdio.h> #include <string.h> char s[2][11]={ "9.36849+0", "5.87654+5", }; double d[2]; int i; char *p; int main() {     for (i=0;i<2;i++) {         p=strchr(s[i],'+');         if (p) {             memmove(p+1,p,strlen(p)+1);             *p='E';         }         sscanf(s[i],"%lf",&d[i]);         printf("%d %s %e\n",i,s[i],d[i]);     }     return 0; } //0 9.36849E+0 9.368490e+000 //1 5.87654E+5 5.876540e+005 //

user: user-0
content: 引用 1 楼 paschen 的回复:printf("%e", 9.36849);这种方法不行的啊，不是输出的时候转化，因为有很多数啊，而且我是直接从文件里读的根本不知道这个数是多少

user: user-5
content: double     m; int            e; double    res;  scanf("%lf+%d", &m, &e); res = m * pow(10, e); printf("%e\n", res);

user: user-3
content: printf("%e", 9.36849);