【发布时间】:2016-03-02 13:56:44
【问题描述】:
我有以下简单的程序,可以逐个字符地读取文本文件。每次从文件中读取一个字符时,都必须放在 str 的末尾,该字符串是一个字符串。出于这个原因,我制作了一个名为 conc 的小函数,它获取字符,重新分配 str 然后获取字符串末尾的字符(str[count ] = ch)。
在 EOF 字符之后,我将 '\0' 字符放在 str 作为字符串变量的结尾。
我的问题是为什么最后一个 printf 显示垃圾?有任何想法吗??
提前致谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void conc(char* str,char ch,int* count);
int main(int argc,char** argv)
{
char* str = (char*)malloc(sizeof(char));
char ch;
int count = 0,i;
FILE* fp = fopen("path","r");
if(fp == NULL){
printf("No File Found");
return 1;
}
ch=fgetc(fp);
while(ch!=EOF){
conc(str,ch,&count);
ch=fgetc(fp);
}
str[count] = '\0';
printf("%s",str);
free(str);
return(0);
}
void conc(char* str,char ch,int* count){
str[*count] = ch;
(*count)++;
//printf("\n%c",str[(*count)-1]);
str = (char*)realloc(str,(*count)+1);
}
【问题讨论】: