产生某位的所有纯数字密码到文件解决方案

产生某位的所有纯数字密码到文件
RT
比如3位的,就是
000
001
……
999

------解决方案--------------------
C/C++ code

#include <stdio.h>
#include<math.h>
void main()
{
    int i, max, n=3;    // 位数
    char temp[10];
    sprintf(temp,"%%0%dd\n",n);
    max=pow(10,n);
    for(i=0;i<max;++i)
    {
        printf(temp,i);
    }
}

运行结果:
000
001
002
...
998
999

------解决方案--------------------
没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
 scanf("%d",&n);
 m=1;
 if (1<=n && n<=9) {
  for (i=0;i<n;i++) m=m*10;
  sprintf(fn,"%d.txt",m);
  f=fopen(fn,"w");
  for (i=0;i<m;i++) fprintf(f,"%0*d\n",n,i);
  fclose(f);
 }
 return 0;
}

------解决方案--------------------
我写的比较麻烦...不过也贴上来了...
C/C++ code

#include <stdio.h>
#include <string.h>

void Itoa(int num,int len,char* str)//数字转字符串
{
    str[len]='\n';//最后的换行符
    while(len>=1){
        int nbit=num%10;
        str[len-1]=nbit+'0';
        len--;
        num=num/10;
    }
}
int main(void)
{
    FILE* file=fopen("passwd.txt","wb");
    int i=0,len,max=1;
    printf("请输入密码位数\n");
    scanf("%d",&len);
    for(i=0;i<len;i++)
        max*=10;
    for(i=0;i<max;i++)
    {
        char str[256]="";
        Itoa(i,len,str);
        printf("str=%s",str);
        fputs(str,file);
    }
    
    return 0;
}

------解决方案--------------------
探讨

没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
scanf("%d",&amp;n);
m=1;
if (1<=n &amp;&amp; n<=9) {
for (i=0;i<n;i++) m=m*10;
sprintf(fn,"%d……

------解决方案--------------------
探讨
引用:

没实际编译链接调试,不保证对。仅供参考:
C/C++ code
#include <stdio.h>
int n,i,m;
char fn[20];
FILE *f;
int main() {
scanf("%d",&amp;amp;n);
m=1;
if (1<=n &amp;amp;&amp;amp; n<=9) {
for (i=0;i<n;……
产生数字和写文件是比较简单的,主要是这句控制格式的稍微有难度吧:
for (i=0;i<m;i++) fprintf(f,"%0*d\n",n,i);//"%0*d\n",+1

------解决方案--------------------
C程序员要对
scanf
printf
类函数的使用要做到“拳不离手,曲不离口。”的程度。
在参考这个例子:
C/C++ code
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

------解决方案--------------------
在参考这个例子:
应为
再参考这个例子:
拼音输入法惹的祸。


------解决方案--------------------
感谢赵老师,学习了。

探讨

C程序员要对
scanf
printf
类函数的使用要做到“拳不离手,曲不离口。”的程度。
在参考这个例子:
C/C++ code
#include <stdio.h>
char s[]="123 ab 4";