簡體   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