【发布时间】:2019-06-15 06:22:56
【问题描述】:
我正在编写一个代码,其中函数“verif”应该验证字符串中的字符是否不同。然后为文件中的每一行调用此函数。然而,虽然我验证了并且函数没问题,但关于指针的返回或主函数中的属性,我做错了一些事情。我得到的结果是文件每一行的'null null null'(我的文件有3行) 这是我的代码:
#include <stdio.h>
#include <stdlib.h>
char* verif (char line[])
{
int i,j,ok=1;
char v[5];
for (i=0; i<strlen(line); i++)
{
for (j=i+1; j<strlen(line); j++)
{
if (line[i]==line[j])
{
ok=0;
break;
}
}
}
if (ok==0) strcpy(v,"No");
else strcpy(v,"Yes");
return v;
}
int main()
{
FILE *f;
char sir[30];
char* ctrl;
if ((f=fopen("fis.txt","r"))==NULL) exit(1);
while (fscanf(f,"%[^\n]",sir))
{
if (fgetc(f)==EOF) break;
puts(sir);
ctrl=verif(sir);
printf("%s",*ctrl);}
}
【问题讨论】:
-
您返回的是一个局部变量的地址,从函数返回时该地址不再有效。
-
试试
return ok==0 ? "No" : "Yes"; -
@osiris 我应该在我的函数中修改什么以便在不执行 Hawk 建议的情况下工作?
-
@MaryPoppins 副本的链接包含一些方法。您可以使用
malloc分配空间或使数组static。