【问题标题】:how do i get the keyboard input written into a txt file如何将键盘输入写入 txt 文件
【发布时间】:2019-03-23 22:34:17
【问题描述】:

我正在尝试读取键盘输入并将它们逐行写入一个新文件(一个不存在的文件),直到写入一个特定字母(在本例中为 -x-),但它似乎不起作用,我保留出错我做错了什么?


void newfunc(){

    FILE *fp;
    fp = fopen("newfile.txt", "w+");
    char char1[100], char2[100];
    int int1, int2;
    int x = 0;
    printf("Inputs\n");
    while(1) {
        scanf("%c %d %c %d", &char1[x], &int1, &char2[x], &int2);
        if ( char1[x] == "x") {
            printf("Done!");
            break;
        }
        else {
        fprintf(fp, "%c %d %c %d\n", char1[x], int1, char2[x], int2);
        }
        x++;
    }
    fclose(fp);

}

它创建文件但不向其中写入任何内容。

【问题讨论】:

  • 你遇到了什么错误?
  • 警告:指针和整数之间的比较和警告:与字符串文字比较导致未指定的行为[-Waddress]符合'if'
  • 当我写'x'时它也不会停止,它会一直继续
  • 你试图一次做太多新的事情。首先尝试一些更简单的事情,比如接受用户输入直到它包含“x”,然后将硬编码字符串写入文件。分别掌握这些东西,然后再一起尝试。
  • 我明白你的意思,谢谢你,我很感激。

标签: c printf scanf


【解决方案1】:

字符和字符串不是一回事。

if ( char1[x] == "x") {

应该是

if ( char1[x] == 'x') {

很难理解为什么要使用数组。为什么不只使用 char 变量,因为这就是您要阅读的内容。

char char1, char2;
int int1, int2;
printf("Inputs\n");
while(1) {
    scanf("%c %d %c %d", &char1, &int1, &char2, &int2);
    if ( char1 == 'x') {
        printf("Done!");
        break;
    }
    else {
        fprintf(fp, "%c %d %c %d\n", char1, int1, char2, int2);
    }
}

【讨论】:

  • 谢谢,我实际上想将输入保存在一个数组中并从那里读取我不知道它会以这种方式工作,这消除了警告,但显然 newfile.txt 中的文本搞砸了现在,似乎写得不好
  • @karlheinzschneiderxy 你在 newfile.txt 中看到了什么?
  • %c 默认情况下不跳过空格。所以也许你应该试试scanf(" %c %d %c %d"(注意第一个%c之前的空格)
  • 哇,这实际上与空间完美配合,就像预期的那样,非常感谢您的帮助和时间,我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多