C 如何将键盘输入写入txt文件

C 如何将键盘输入写入txt文件,c,printf,scanf,C,Printf,Scanf,我试图读取键盘输入,并将它们逐行写入一个新文件(不存在的文件),直到写入一个特定的字母(-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) {

我试图读取键盘输入,并将它们逐行写入一个新文件(不存在的文件),直到写入一个特定的字母(-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);

}


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

字符和字符串不是一回事

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);
    }
}

字符和字符串不是一回事

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);
    }
}


你得到了什么错误?警告:指针和整数之间的比较和警告:与字符串文字的比较会导致未指定的行为[-Waddress]与“if”一致,而且当我写“x”时,它不会停止,它只会继续运行。你试图一次做太多新的事情。首先尝试一些简单的事情,比如接受用户输入直到它包含“x”,以及将硬编码字符串写入文件。在您尝试串联之前,请分别掌握这些内容。我理解您的观点,谢谢,我很感激。您会遇到什么错误?警告:指针和整数之间的比较以及警告:与字符串文字的比较会导致与“if”一致的未指定行为[-Waddress],并且在我写“x”时不会停止,它一直在继续,你试图同时做太多的新事情。首先尝试一些简单的事情,比如接受用户输入直到它包含“x”,以及将硬编码字符串写入文件。在你尝试串联之前,先分别掌握这些内容。我理解你的意思,谢谢你,我很感激。谢谢,我实际上想将输入保存在数组中,然后从数组中读取。我不知道这样做会起作用,这会删除警告,但显然newfile.txt中的文本现在被弄乱了,似乎没有写properly@karlheinzschneiderxy您在newfile.txt中看到了什么?
%c
默认情况下不会跳过空白。因此,也许您应该尝试
scanf(“%c%d%c%d”
(注意第一个
%c
前面的空格)哇,这真的很适合这个空间,就像预期的一样,非常感谢你的帮助和时间,我很感激。谢谢你,我真的想把输入保存在一个数组中,然后从那里读取。我不知道它会这样工作,这删除了警告,但显然newfile.txt中的文本现在被弄乱了,似乎无法写入Eproperly@karlheinzschneiderxy您在newfile.txt中看到了什么?
%c
默认情况下不会跳过空格。因此,您可能应该尝试
scanf(“%c%d%c%d”
)(请注意第一个
%c
前面的空格)哇,这真的很适合空间,就像预期的一样,非常感谢你们的帮助和时间,我很感激。