【问题标题】:Unexpected result after printing a string in c [duplicate]在c中打印字符串后出现意外结果[重复]
【发布时间】:2022-01-19 12:40:02
【问题描述】:

代码是-

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *filevar;
    filevar = fopen("file", "r");
    char copy [100];
    int i = 0;

    while(1)
    {
        char ch = fgetc(filevar);
        if(ch==EOF)
        {
            break;
        }
        copy[i] = ch;
        i++;
    }
    printf("\n%s", copy);
    fclose(filevar);
    return 0;
}

当我运行它时,我得到的输出是

textblabla■a

文件内容是-

文本blabla

更改文件内容会更改末尾的随机字符

【问题讨论】:

标签: c string


【解决方案1】:

两个主要问题。

  1. ch 必须是 int
  2. 你没有空字符终止字符串
        int ch = fgetc(filevar);
        if(ch==EOF)
        {
            copy[i] = 0;
            break;
        }
        
        copy[i] = ch;
        i++;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多