取字符串输入直到等于“/0”

Take string input until it is equal to "/0"

我希望用户最多输入 R 字符串,直到循环结束或直到他们按下 ENTER,所以输入基本上等于“\0”。 然后我想统计用户输入的字符数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define R 5
#define C 2


int main(){

    char Pin[R][C];

    char str[100];

    for(int i = 0; i < R; i++){
        
            printf("Enter a string: ");
            scanf("%s", &Pin[i]);
            if(str == "[=10=]"){break;}
            strcpy(Pin[i],str);
    }
    int sum = 0;
    for(int i = 0; i < R; i++){
        for(int j = 0; j < C; j++){

            int kapa = sizeof Pin[i];
            sum += kapa;
        }
    }

    printf("\n\n%d", sum);

    
    return 0;
}

这是我的代码,但每当我按下回车键以获取另一个输入时,它都会跳过一次。 另一个问题是它也计算字符“\n”,如果它不计算的话我会更喜欢它。

提供的程序没有意义。

例如每个字符数组 Pin[i] 最多可以包含一个字符串,如果不计算字符串的终止零字符 '[=15=]'

在此for循环中

for(int i = 0; i < R; i++){
    
        printf("Enter a string: ");
        scanf("%s", &Pin[i]);
        if(str == "[=10=]"){break;}
        strcpy(Pin[i],str);
}

使用了未初始化的数组str,在循环中没有改变。

这个if语句

if(str == "[=11=]"){break;}

的计算结果始终为 false,因为比较了数组 str 和字符串文字 "[=18=]" 的第一个字符的两个指针。由于它们占用的内存范围不同,因此它们的地址也不同。

还有关于输入了多少字符串的信息存储在任何地方。

这些嵌套的for循环

for(int i = 0; i < R; i++){
    for(int j = 0; j < C; j++){

        int kapa = sizeof Pin[i];
        sum += kapa;
    }
}

也说不通。例如索引 j 未被使用。表达式 sizeof Pin 是常量表达式,根据数组 Pin 的定义,其计算结果始终为 2。您需要使用函数 strlen 而不是运算符 sizeof.

看来你的意思是下面的

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

int main( void )
{
    enum { R = 5, C = 100 };
    char Pin[R][C];

    size_t n = 0;

    for (; n < R; n++)
    {
        char s[C];
        s[0] = '[=13=]';

        printf( "Enter a string: " );

        if ( !fgets( s, sizeof( s ), stdin ) || s[0] == '\n') break;

        s[strcspn( s, "\n" )] = '[=13=]';

        strcpy( Pin[n], s );
    }

    size_t sum = 0;
    for (size_t i = 0; i < n; i++)
    {
        sum += strlen( Pin[i] );
    }

    printf( "\nsum of lengths of the strings is %zu\n", sum );
}

程序输出可能看起来像

Enter a string: 1
Enter a string: 12
Enter a string: 123
Enter a string:

sum of lengths of the strings is 6