字符串中的只读变量在for-loop C中不可分配

时间:2017-01-07 16:07:51

标签: c string for-loop const

程序从输入中获取一个字符串,并在另一个输入字符串中查找字符串中的第n个字符。如果第一个字符串中的第一个字符串在第二个字符串中,程序将输出字符,否则它将不打印字符匹配。这些计划如下:

#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);
}

错误出现在for-loops和states中:

  

错误:只读变量不可分配

此外,错误说明:

  

注意:将参数传递给参数

1 个答案:

答案 0 :(得分:3)

for循环之前您遇到了问题。

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

显然

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

无效,因为您正在尝试写入(,即修改的内容)对象,其中使用const类型限定符定义。它们应该表现为常量,即不应该更改这些值,因此它们不能被更改或更改,只能初始化。

修复:从两组变量定义中删除const