【发布时间】:2014-03-15 07:37:28
【问题描述】:
strcpy(home,"");
for(j=del1;j<del2;j++){
home[ strlen(home) ] = word[j];
printf("your house is %s",home);
但我得到了垃圾。我尝试这样做:
strcat(word[j],home);
但是当我运行它时它不起作用
我正在尝试制作一个简单的程序来从文件中写入/读取单词:
写:
fp = fopen ( "houses.txt", "a" );
fprintf(fp,"%s&",home);
fclose ( fp );
printf(" Inserted element\n");
阅读:
char c, home[50],word[100];
strcpy(home,"");
int i=0,del1=0,del2=0,j;
FILE *fp;
fp = fopen ( "houses.txt", "r" );
while (c!=EOF)
{
c=getc(fp);
word[i]=c;
i=i+1;
if (c=='&')
{
del2=i-1;
strcpy(home,"");
for(j=del1;j<del2;j++)
{
strcat(word[i], home);// OR home[ strlen(home) ] = word[j];
}
del1=del2;
printf("%s \n",home);
}
}
fclose ( fp );
【问题讨论】:
-
你在做什么?什么是家?和词?
-
垃圾进,垃圾出。很简单。
-
home是如何声明的? -
所以如果它被覆盖了,那么
strlen将如何找到它?strlen会找到一些'\0',可能在数组末尾的位置(除非整个内存中的每个字节都不为零,在这种情况下,您可能会遇到分段错误)。跨度> -
strcat期望char*作为其第一个参数,但word[i]可能是char。我仍然不知道你在这里真正想要完成什么。