Как я могу стереть содержимое массива, чтобы позже использовать strcat ()? - PullRequest
0 голосов
/ 14 марта 2019

Я читаю строки из файла, и для части я решил прочитать в char char. Вот что я получил:

char str[500];    // it has to be this size, I promise
char c;           // for reading each char
c = fgetc(fp);
while (c != '\t') // this char ends the string I'm trying to read
{
    strncat(str, &c, 1);    // strcat() didn't work
    c = fgetc(fp);  // read next char
}

Это отлично работает. Тем не менее, я должен прочитать еще много строк. Я попытался сбросить str, чтобы я мог снова использовать strncat () таким же образом, но получаю ошибку «Abort trap: 6». Вот некоторые вещи, которые я пробовал (отдельно):

strcpy(str, ""); and strcpy(str, " "); // just assigns first index to '\0'
strcpy(str, 0);      // seg fault
strcpy(str, "\0"); and strcpy(str, '\0'); // same as first option
memset(str, 0, strlen(str));    // all zeroes, but Abort trap: 6
memset(str, 0, sizeof(str));    // same thing
// and (in desperation)
strcpy(str, &c + '\0');         // this is after doing strcpy(str, "");
                                // get an error

Я бы не хотел перебирать str, назначая каждому значение null, потому что у меня есть ожидаемая строка, которая почти заполнит массив. Спасибо!

1 Ответ

1 голос
/ 14 марта 2019

str[0] = 0; - это все, что вам нужно - это вставляет терминатор NUL в начало массива. strcpy(str, ""); имеет тот же эффект и работает так же хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...