在c中打印字符串后出现意外结果[重复]
Posted
技术标签:
【中文标题】在c中打印字符串后出现意外结果[重复]【英文标题】:Unexpected result after printing a string in c [duplicate] 【发布时间】: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
更改文件内容会更改末尾的随机字符
【问题讨论】:
char ch
必须是 int ch
。
如果你想像printf("\n%s", copy);
一样使用copy
作为字符串,你必须在最后一个字符之后添加一个NUL字符('\0'
)
Why does fgetc() return int instead of char?
【参考方案1】:
两个主要问题。
ch
必须是 int
你没有空字符终止字符串
int ch = fgetc(filevar);
if(ch==EOF)
copy[i] = 0;
break;
copy[i] = ch;
i++;
【讨论】:
以上是关于在c中打印字符串后出现意外结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章
顶部带有 %include 的程序集 - 打印输出意外结果:只是一个“S”