2015-12-17 6 views
-1

Как удалить каждый символ, который не является буквой строки Из строки a,f,4,h,b, Мне нужен вывод afhbi. Обратите внимание, что мне не нужны запятые и другие подобные знаки. Это мой код до сих пор, и он не работает, никаких советов?Работа с файлами в c

while((fgets(str,30,fpointer))!=NULL) 
{ //i get a string 

    for(i=0;i<strlen(str);i++)//going thru the string 
    if(isalpha(str[i])){strcat(Need,str[i]);} 
     //if the char is alpha put it in a new string called Need 
} 

ответ

1

Вы не хотите использовать strcat добавить символ в массив. Это для добавления одной строки в другую. Просто вставьте символ в массив.

int j = 0; // Index of the new string 
for(i = 0; i < strlen(str); i++) { //going thru the string 
    if(isalpha(str[i])) { 
     Need[j++] = str[i]; 
    } 
} 
Need[j] = 0; // Make sure you terminate the new string 
+0

Спасибо, что хорошо работает. –

+0

Добро пожаловать. http://stackoverflow.com/help/someone-answers –

0

Вы также можете сделать что-то подобное, используя memmove. Сначала скопируйте строку в Need;

Need = strdup(str); 
p = Need; 
q = str; 
while (*q) { 
    if (!isalpha(*q)) { 
     len = strlen(p); 
     memmove(p, p + 1, len); // this will move the NULL terminator too 
    } else { 
     p++; 
    } 
    q++; 
} 

Теперь необходимо очистить от уродливых несимволов!

Смежные вопросы