我想用C语言编写一个简单的程序,它将在while循环中获取10个字符串用户输入并将其存储到food.txt文件中。但是每当我尝试再次将用户输入存储到变量inputFood时,就会出现问题。它还在“ strcpy(&allFood,inputFood);”处发送错误。线程1:信号SIGABRT。有人可以帮忙吗?

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

int main() {

    int i = 0;

    printf("Hello World!\n");

    char * inputFood;
    char allFood = {0};

    FILE * fPointer;
    fPointer = fopen("/Users/Antonio/Desktop/food.txt", "a");

    while (i < 10){

        i = i + 1;
        scanf("%s", inputFood);
        strcpy(&allFood, inputFood);

    }

    fputs(&allFood, fPointer);
    fclose(fPointer);
}

最佳答案

为inputFood分配内存,例如100个字符:

inputFood = malloc(100);


并将allFood设置为数组,而不是char:

char allFood[1000];


因此,您将需要像这样使用strcat而不是strcpy:

strcat(allFood, inputFood);


然后像这样扫描输入的食物:

scanf("%99s", inputFood);

关于c - 多个输入到一个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26253295/

10-11 21:15