【问题标题】:How to store string to txt file如何将字符串存储到txt文件
【发布时间】:2021-02-09 13:07:59
【问题描述】:
void inserting()
{
    char file_name[50]; 
    char sentence[1000];
    FILE *fptr;
    printf("File name (With extn):");
    scanf("%s", file_name);
    fptr = fopen(file_name, "a");
    if (fptr == NULL)
    {
        printf("Error!");
        exit(1);
    }
    printf("Enter a sentence:\n");
    scanf("%s", sentence);

    fgets(sentence,sizeof(sentence),stdin);    
    fprintf(fptr, "%s", sentence);
    fclose(fptr);
}

我想将内容从字符串存储到文件...但它显示了除第一个单词之外的所有内容..

INPUT : Hello this is C program //which I have entered
OUTPUT: this is C program //this is what stored in file  

【问题讨论】:

  • 在存储字符串之前将字符串打印到屏幕上以查看它们包含的内容。
  • @klutt 是的,我试过了,令人惊讶的是它只显示第一个单词而不是其余部分
  • 没错。我的观点是,这个问题与文件处理完全无关。学习创建minimal reproducible example
  • @klutt 道歉我是新来的……我仍然不知道如何解决这个问题
  • 不用担心。学习如何提问与学习如何编程一样是一种技能。

标签: c string scanf


【解决方案1】:
#include<stdio.h>

void inserting()
{
    char file_name[50]="C:\\Users\\Dev Parzival\\Desktop\\foo.txt";
    char sentence[1000];
    FILE *fptr;
    //printf("File name (With extn):");
    //scanf("%s", file_name);
    fptr = fopen(file_name, "w");
    if (fptr == NULL)
    {
        printf("Error!");
        exit(1);
    }
    printf("Enter a sentence:\n");
    scanf("%[^\n]", sentence);
    printf(sentence);

    //fgets(sentence,sizeof(sentence),stdin);
    fprintf(fptr, "%s", sentence);
    fclose(fptr);
}

int main(){
    inserting();
}

扫描不会读取%s 的空格,你必须包含空格,我认为这就是为什么使用%[^\n]format 说明符。

【讨论】:

  • 它在我的系统上执行得很好,如你所愿修改。希望它有所帮助:)
【解决方案2】:

如果你想保留你的代码进行调整

void inserting(){
        char file_name[50]; 
        char sentence[1000];
        FILE *fptr;
        printf("File name (With extn):");
        scanf("%s", file_name);
        fptr = fopen(file_name, "a");
        if (fptr == NULL)
        {
            printf("Error!");
            exit(1);
        }
        printf("Enter a sentence:\n");
        scanf("%s", sentence);
        fprintf(fptr,"%s",sentence); //<-- HERE
        fgets(sentence,sizeof(sentence),stdin);    
        fprintf(fptr, "%s", sentence);
        fclose(fptr);
    }

或者您可以使用getline 之类的东西来更清洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多