2017-01-07 2 views
-5

Программа получает строку из ввода и ищет n-го символа в строке в другой введенной строке. Если первый символ из первой строки находится во второй строке, программа выведет символ, если не будет напечатано никакое совпадение символов. Программы выглядит следующим образом:переменная только для чтения из строки не назначается в for-loop C

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

int main(){ 
    const char s[1000], i; 

    printf("Enter a string: "); 
    scanf("%s", s); 

    const char str1[1000]; 

    printf("Enter a string: "); 
    scanf("%s", str1); 

    // int b; 

    for(i = 0; str1[i] != '\0'; ++i){ 
     b = i; 
    } 

    for(i = 0; i < b; i++){ 
     char *ret; 
     ret = strpbrk(s, s[i]); 
     if(ret) 
     { 
      printf("First matching character: %c\n", *ret); 
     } 
     else 
     { 
      printf("no char match \n"); 
     } 
    } 
    return(0); 
} 

Ошибка в обоих для петель и состояний:

error: read-only variable not assignable

Кроме того состояния ошибки:

note: passing argument to parameter here

+3

Не используйте 'const', если вы хотите иметь возможность назначать переменным ... – interjay

+2

Если вы объявляете' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' на самом деле, только если вы предоставляете инициализатор). Просто удалите 'const'! И использование 'const char i' в качестве индекса цикла для работы над массивом размером до 1000 имеет всевозможные проблемы. Вы не можете его изменить; он не будет содержать все необходимые значения. –

+0

Почему вы используете 'const'? – raymai97

ответ

3

У вас есть проблемы задолго доfor петля.

scanf("%s", s); 
scanf("%s", str1); 

и, очевидно

for (i = 0; ...; ++i 

являются недействительными, так как вы пытаетесь писать в (то есть, изменять содержимое) объекты определены с const типа классификатором. Они должны вести себя как константы, то есть значения не должны изменяться, поэтому их нельзя изменять или изменять, их можно инициализировать.

Исправление: удалите const из двух наборов определений переменных.

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