2016-02-28 3 views
-3

в нижеприведенной программе Мне нужно изменить строку без использования функции библиотеки. Но результат после копирования печатает некоторую стоимость мусора. Может ли кто-нибудь помочь мне разобраться с этим? Please find the code and outputпроблема с копией строки в C

+0

Первое, что вам нужно сделать, это определить лимит символов и придерживаться его, иначе вы можете ожидать ошибку сегментации. Кроме того, он более полезен для отправки кода в виде текста на экране вместо изображения с половиной компьютерной программы. – Mike

+1

1. '#include ' в верхней части файла. 2. Исправьте ошибки компилятора. 3. Если возникли дополнительные вопросы, скопируйте/вставьте код в виде текста, а не изображений. – dxiv

+0

Возможный дубликат [Мусор печатается при использовании strcpy] (http://stackoverflow.com/questions/11161609/garbage-being-printed-when-using-strcpy) – Abhijeet

ответ

2

str1 и str2 должны быть char массивов достаточно большими для хранения строк. Для вашего упрощенного примера следует сделать char str1[128], str2[128];.

Вы должны инициализировать j длину str1 перед циклом и нулевым прекратить str2 с str2[j--] = '\0'; перед циклом:

for (j = 0; str1[j] != '\0'; j++) { 
    continue; 
} 
str2[j--] = '\0'; 
for (i = 0; str1[i] != '\0'; i++, j--) { 
    str2[j] = str1[i]; 
} 
+0

, но для 'strlen' требуется библиотека string.h, OP хочет обойтись без ее использования. – Cherubim

+0

@ ch3rub7: вы правы, я удалил' 'зависимость. – chqrlie

+0

завершение str2 с нулевым значением дает желаемый результат. если str2 не заканчивается нулевым значением, результат подобен «ayvid garbage value divya» (как на экране вывода в pic one). Мне нужно знать, как после значения мусора он снова печатает исходную строку в конце. Кто-нибудь может прояснить? – divya

0

str2 должен быть присвоен нулевым символом «\ 0» после разворота строки в течение петля.

for(j=strlen(str1);str1[i]!='\0';i++,j--) 
     str2[j-1]=str1[i]; 
str2[i]='\0'; 
+0

завершение str2 с помощью null. Спасибо. – divya

+0

Если str2 не заканчивается нулевым значением, то результат подобен значению «ayvid garbage value divya» (как на экране вывода в pic one). Мне нужно знать, как после значения мусора он снова печатает исходную строку в конце. – divya

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