【发布时间】:2026-02-16 12:30:01
【问题描述】:
我想编写一个程序来读取文件并分解其内容。该文件基本上包含一个包含 ID 的字符串。文件内容如下:
[root@ben-pc ~]# cat file
1,2,3
我想从解析函数中分别返回 ID 1、2、3。在我的代码中,我得到了 while 循环内的前两个 ID 和 while 循环外的最后一个 ID。但我无法正确返回所有这些值。我知道我不能在这样的代码中使用两个return 调用。任何人都可以建议我如何按需要进行这项工作。这是我的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
char *get_group_members (char* file)
{
FILE *fp;
char *str;
char filename[64];
int c;
size_t n = 0;
snprintf(filename, sizeof(char) * 64, "/home/ben/%s", file);
fp = fopen(filename, "r");
if(fp == NULL)
{
perror("Error opening file");
}
str = malloc(100);
while ((c = fgetc(fp)) != EOF )
{
if(c != ',')
{
str[n++] = (char) c;
}
else
{
//return str; Not working
printf("%s,", str);
n = 0;
}
}
//return str; Not working
printf("%s", str);
fclose(fp);
}
int main (void)
{
printf("Group Members are ::\n");
printf("%s\n", get_group_members("file"));
return 0;
}
【问题讨论】:
-
while 循环中的第一个 return 将终止函数。其余代码被跳过。
-
可以返回一个char *的数组。
-
函数结束返回怎么样?
-
在从函数返回之前,您不会以 0 终止您的计算。您还应该关闭
get_group_members中的文件,即使这不是问题,因为程序将在调用get_group_members后立即退出。 -
@EOF 在函数末尾返回只会给出最后一个数字。
标签: c linux while-loop return