繁体   English   中英

在 C 中打印字符串时如何解决此问题?

[英]How I can fix this problem when print string in C?

我的代码有问题。

#include <stdio.h>
#include <string.h>
#define size 100

int main()
{
    char s1[size],s2[size],s3[size];
    int i,j,k,p;
    
    printf("s1: ");fgets(s1,size,stdin);
    printf("s2: ");fgets(s2,size,stdin);
    if (s1[strlen(s1)-1]=='\n')
        s1[strlen(s1)-1]='\0';
    if (s2[strlen(s1)-1]=='\n')
        s2[strlen(s2)-1]='\0';
    printf("Insert position: ");scanf("%d",&p);
    j=0;
    for (i=p;i<strlen(s1);i++)
    {
        s4[j]=s1[i];
        j++;
    }
    printf("s3: %s\n", s3); 
}

当我运行这个文件时。 这有错误的结果。 我不知道为什么 s3 是“a”。 任何人都可以帮助我。 非常感谢。

在此处输入图片说明

对于初学者,您正在填充字符数组s4

for (i=p;i<strlen(s1);i++)
{
    s4[j]=s1[i];
    j++;
}

但是正在输出字符数组s3

printf("s3: %s\n", s3); 

as 和数组s4不包含字符串。:) 数组s3未初始化并包含不确定的值。

你至少需要这样写

j=0;
for ( size_t n = strlen( s1 ); i < n; i++ )
{
    s3[j]=s1[i];
    j++;
}

s3[j] = '\0';

printf("s3: %s\n", s3); 

您尚未声明 s4,但您使用的是 s4 而不是 s3。 并且还打印 s4。

s4[j]=s1[i];

做这个

s3[j] = s1[i];

输出:

s1: hello
s2: wo
Insert position: 3
s3: lo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM