gpt4 book ai didi

c - 为什么我的 while 循环被激活,但没有其他 react ?

转载 作者:行者123 更新时间:2023-12-01 13:48:56 25 4
gpt4 key购买 nike

所以现在我正试图通过执行以下操作来处理标准输入和输入文件:

./a.exe <输入.txt

input.txt 文件只有很多随机测试用例,所以我可以看看我做的是否正确。我试图通过使用标准输入从我的输入文件中删除一些标点符号。你会注意到我有几个 printf 在那里说“这里”。我把它放在那里看程序是否到达它。

所以每当我运行它时,我输入“./a.exe < input.txt”,然后我得到“bash: input.txt: No such file or directory”。所以我想......好吧,我只是输入几个随机输入,看看它是否有效。我输入了随机单词,结果发现程序甚至没有命中我在 ./a.exe 之后输入的任何单词。

谁能解释为什么我会遇到这些错误?

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
char textin[80], wordout[80];
int i, j;
int count = 0;

printf("%d", argc);
while (count != argc)
{
scanf("%s", textin);
if (strcmp(textin, ".") == 0)
printf("here");
printf("here2");

strcpy(wordout, textin);
for (i = 0 ; i < strlen(wordout) ; i++)
{
if (wordout[i] == '.' || wordout[i] == ',' ||
wordout[i] == '"' || wordout[i] == ';' ||
wordout[i] == '!' || wordout[i] == '?' ||
wordout[i] == '(' || wordout[i] == ')' ||
wordout[i] == ':')
{
for (j = i ; j < strlen(wordout) - 1 ; j++)
wordout[j] = wordout[j + 1];
wordout[j] = '\0';
}
printf("here3");
}
printf("%s\n", wordout);
count++;
}
return 0;
}

最佳答案

第一个问题与您的程序无关,您遇到的错误是 bash错误,试图打开 input.txt连接到您的 a.exe 的标准输入程序。这发生在您的代码甚至开始运行之前。

你需要弄清楚为什么 bash找不到您的文件,例如:

  • 你在正确的目录中吗?
  • input.txt文件是否真的存在?
  • 您是否以文件名中有特殊字符(例如 inpux<backspace>t.txt)的方式创建它?

至于另一个问题,您似乎混合使用了两种不同的方法来从用户那里获取信息。

这两个方法是传递给程序的参数(argc/v)和标准输入(scanf())。

可能您正在使用类似以下内容运行您的代码:

./a.exe arg1 arg2 arg3

并期望它对他们做点什么。不幸的是,scanf()在你的循环中将只是等待你在终端上输入一些东西,所以它可能看起来它已经挂起。

我认为您需要弄清楚您希望如何将输入呈现给程序。如果它是通过参数,你会使用 argv[N]其中 1 <= N < argc .如果是通过标准输入,你可能不需要关心 argc/v完全没有。

关于c - 为什么我的 while 循环被激活,但没有其他 react ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com