[英]fgets inside a loop C
char in[20];
char out[20];
for(int i=0; i < nEdges ;i++){
char str[50];
fgets(str, 50, stdin);
char *result = NULL;
result = strtok(str, " ");
int count = 0;
int i = 0;
char name[2][20];
while(result != NULL){
strncpy(name[i],result,20);
result = strtok( NULL, " ");
count++;
i++;
}
if(count > 2){
errorMsg2();
}else{
i = strlen(name[1]);
for(int x=0; x < i ;x++){
if(name[1][x] == '\n')
name[1][x] = '\0';
strncpy(out,name[0],20);
strncpy(in,name[1],20);
}
嗨,我正在尝试读取一行并验证是否只有两个元素,否则为错误消息。 这一切都在for循环内,当我执行程序时,fgets从不要求我输入。 fget在循环中起作用吗?
是否在循环内使用fgets
并不重要。 可能存在另一个问题。 使用调试器逐步解决它是最好的选择。
一个潜在的问题是将strncpy
转换为name
的循环。 如果缓冲区中有两个以上的项目,则它将在name
数组的边界之外写入。 最好在覆盖之前(而不是之后)添加一个检查以避免这种可能性的检查。
另一个可能的问题是使用变量i
。 您可能有一些范围界定问题。 该变量在主循环中使用,然后通过调用strlen
在该循环中更新。 这可能会导致主循环提前结束(取决于nEdges
的值和name[1]
的长度。在两种情况下,这都可能不是理想的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.