| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1847 人关注过本帖
标题:求大神指点,改错,关于文本文件
只看楼主 加入收藏
高威
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2016-6-5
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:3 
求大神指点,改错,关于文本文件
求出10000以内的素数,保存到文本文件中,保存到文本文件的要求每行5个数,每个数占10列列宽。
下面是我编的程序,试了好多遍都错了。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char f(int a)
{
    int i=0,j=0;
    char b[10],t,p;
    while(a!=0)
    {
        b[i]=a%10+'0';
        a=a/10;
        i++;
    }
    while(j<i)
    {
        t=b[j];
        b[j]=b[i];
        b[i]=t;
        i--;
        j++;
    }
    return b;
}
void main()
{
   
    int i,j,n=0,m=0,a;
    char st[10],t;
    for(i=0;i<=10000;i++)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
                break;
        }
        if(j==i)
        {
            if((fp=fopen("D:\\B.TXT","at"))==NULL)
                {
            printf("不能打开文件,按任意键退出程序!");
                getch();
                exit(1);
                }
                fputs(f(i),fp);
                fclose(fp);

        }
    }
}
我是一个c语言初学者,只能看懂一些简单的程序。请指点的人不要写一些太复杂的程序。
还有想问一下怎样让一个字符串数组作为返回值。谢谢。

搜索更多相关主题的帖子: 文本文件 include return 
2016-06-05 21:47
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
实参在函数返回时会被自动释放,所以你直接返回b是不行的,除非把b定义成全局变量。而且如果返回字符串的话,函数类型要么是指针,要么是数组,而不能是char型

程序代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void f(int a, char b[])
{
    int i = 0;
    while (a != 0)
    {
        b[9 -i] = a % 10 + '0';
        a = a / 10;
        i++;
    }
    for (i = 9-i; i >= 0; i--)
    {
        b[i] = ' ';//不足位数的部分以空格代替
    }
    b[10] = 0;
}
void main()
{
    FILE *fp = NULL;
    int i, j, n = 0;
    char st[11];
    if ((fp = fopen("D:\\B.TXT", "w")) == NULL)
    {
        printf("不能打开文件,按任意键退出程序!");
        _getch();
        exit(1);
    }
    for (i = 0; i <= 10000; i++)
    {
        for (j = 2; j<i; j++)
        {
            if (i%j == 0)
                break;
        }
        if (j == i)
        {            
            f(i, st);
            fputs(st, fp);
            n++;
            if (n == 5)//每5个数换行
            {
                fputs("\n", fp);
                n = 0;
            }
        }
    }
    fclose(fp);

}
2016-06-06 09:43
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10566
专家分:43004
注 册:2014-5-20
收藏
得分:10 
程序代码:
#include<stdio.h>
main()
{
    FILE *fp = NULL;
    int i, j, n = 0;
    if ((fp = fopen("D:\\B.TXT", "w")) == NULL)
    {
        printf("不能打开文件,按任意键退出程序!");
        getchar();
        return 1;
    }
    for (i = 0; i <= 10000; i++)
    {
        for (j = 2; j<i; j++)
        {
            if (i%j == 0)
                break;
        }
        if (j == i)
        {            
            fprintf(fp, "%10d", i);
            n++;
            if (n == 5)//每5个数换行
            {
                fputs("\n", fp);
                n = 0;
            }
        }
    }
    fclose(fp);
}
2016-06-06 10:24
高威
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2016-6-5
收藏
得分:0 
谢谢两位指点。
2016-06-06 21:23
快速回复:求大神指点,改错,关于文本文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012694 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved