Вычистка струн в петле - PullRequest
0 голосов
/ 13 июля 2009

Я пытаюсь перебрать char*

Можно ли как-нибудь сбросить эти char* строки обратно на пустые?

Я пытаюсь сбросить с 1 и отправить 1.

Что-то не так с моим кодом ... это только копирование первого файла в моем массиве

 for(i = 0; i < 3; i++)
 {
     from1 = " ";
     send1 = " ";
     from1 = strncat(fileLocation,filesToExport[i],50);
     send1 = strncat(whereAmI,filesToExport[i],50);

     CopyFile(from1,send1,TRUE);
     printf("%s\n",from1);
     printf("%s",send1);
 }

Ответы [ 6 ]

3 голосов
/ 13 июля 2009

Строки завершаются нулем, что означает, что они имеют нулевой символ в конце. Вы можете установить первый символ в строке на ноль, чтобы усечь его до пустого значения:

from1[0] = '\0';

Другой способ - скопировать пустую строку:

strcpy(from1, "");
2 голосов
/ 13 июля 2009

Что вы подразумеваете под "пустым"? Ноль, пробелы или пусто?

Для заполнения области памяти лучше всего использовать memset (), поэтому

#include <string.h>

memset(pBuffer, ' ', length); /* Fill with spaces */
pBuffer[length] = '\0'; /* Remember to null-terminate manually when using memset */ 

memset(pBuffer, '\0', length); /* Fill with zeroes */

pBuffer[0] = '\0'; /* Set first element to null -- effectively set the string 
                    * to length 0
                    */
1 голос
/ 13 июля 2009

Вы копируете в filelocation и whereami. Это буферы или строки? Возможно, вы записываете конец своей строки.

Я думаю, вам лучше выделить буфер подходящего размера

fromLen = strlen(fileLocation);
fileLen = strlen(filesToExport[i]);

from1 = malloc(fromLen + fileLen + 1);

/* add check here that string fits */

strcpy( from1, filelocation);
strcat( from1 + fromLen, filesToExport[i]);

/** etc **/

free(from1);
1 голос
/ 13 июля 2009

Чтобы очистить строку от пустой, чтобы в strncat() была пустая строка для конкатенации, просто выполните:

from1[0] =  '\0';

Это устанавливает первый символ в нулевой терминатор, который указывает конец строки, таким образом, что строка имеет длину 0. Это предполагает, что from1 является действительным изменяемым буфером char, но ваш вызов strncat() подразумевает, что это так.

1 голос
/ 13 июля 2009

Самый простой способ - установить первый байт в 0. Как это:

from1[0] = 0;
send1[0] = 0;

C / C ++ проверяет конец строки char* путем поиска байта 0. Неважно, что за этим следует.

0 голосов
/ 13 июля 2009

Вы имеете в виду, как

send1[0] = 0;
from1[0] = 0;

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