首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序将输出放入一个新文件中

C程序将输出放入一个新文件中
EN

Stack Overflow用户
提问于 2020-05-18 18:57:15
回答 2查看 259关注 0票数 0

所以我甚至解决了一个问题,我必须从输入文件中找到质数,并将这些质数保存在名为output.txt.But的输出文件中如果输入文件中没有质数,当我完成代码时,我必须在输出file.So中写入“没有找到质数”当没有质数时,它会显示5-6次没有找到质数,并且我只想让它出现1 time.What这是我的错误吗?我完全是个菜鸟

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int Primecheck(const int number);

int main()
{
    FILE* Number, 
        * Prime_N;

    int num;
    char sentence[50] = "No prime numbers found";
    int length = strlen(sentence);
    int i;

    Number = fopen("input.txt", "r");
    Prime_N = fopen("output.txt", "w");

    if (Number == NULL || Prime_N == NULL)
    {
        printf("Unable to open file.\n");
        exit(EXIT_FAILURE);
    }

    printf("File opened and Reading Done \n\n");

    while (fscanf(Number, "%d", &num) != -1)
    {
        if (Primecheck(num) == 1)
            fprintf(Prime_N, "%d\n", num);
        else
            for (i = 0; i < length; i++)
            {
                fputc(sentence[i], Prime_N);
            }
    }

    fclose(Number);
    fclose(Prime_N);

    printf("Overwrite Success.");

    return 0;
}

int Primecheck(const int number)
{
    int i;

    if (number < 0)
        return 0;

    for (i = 2; i <= number / 2; i++)
    {

        if (number % i == 0)
        {
            return 0;
        }
    }
    return 1;
}
EN

回答 2

Stack Overflow用户

发布于 2020-05-18 19:25:34

而不是

代码语言:javascript
复制
else
    for(i=0;i<length;i++)
    {
        fputc(sentence[i] ,Prime_N);
    }

你可以直接写

代码语言:javascript
复制
else
    printf("No prime numbers found");
票数 0
EN

Stack Overflow用户

发布于 2020-05-18 19:31:24

好的,正如我从你的代码中看到的,每次你从文件中读取一个数字,你都会检查它是质数还是sentence数。所以你当然会得到多个输出,你应该将这个数字写入char*,然后检查在从Number中读取并检查素数后是否发生了变化,在循环之后将这个数字写在char*中,只要检查你存储素数的char*的长度,如果改变了,就写它,否则写你的句子…完成

像这样的东西

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>


typedef struct {
    char* data;
    size_t size;
    size_t capacity;
} string;

void init_string(string* s, size_t size){
    s->data = (char*)malloc(sizeof(char) * size);
    s->capacity = size;
    s->size = 0;
}

void append(string* s,const char* str){
    if(s->capacity - s->size < strlen(str)){
        s->data = (char*)realloc(s->data, sizeof(char)* 4 * strlen(str));
    }strcat(s->data, str);
}

void free_string(string* s){
    free(s->data);
}


int is_odd(int n){
    return n%2;
}

int main(){
    int num[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};

    string str;
    init_string(&str,1);
    char* snum;
    for(int i=0; i<18; i++){
        if(!is_odd(i)){
            sprintf(snum,"%d",num[i]);
            append(&str, snum);
            append(&str, "\n");
        }
        //printf(snum);
        //strcat(str, snum);
    }
    printf("%s",str.data);    
    free_string(&str);
    //printf(str);
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61868014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档