字符串操作和转换

问题描述 投票:0回答:1

作为练习,我可以采用两个整数或两个字符串。如果我想要整数作为输入,我需要将它们转换为字符串,或者如果我将字符串作为输入,我需要将字符串转换为整数。 当我想一次输入两个字符串时,不知何故,它们被连接起来。 如果我采用整数,当我想使用 snprintf 进行转换时,字符串会再次连接!

当我将字符串作为输入时:

#include <stdio.h>
int main(){

char n[5],m[5];
scanf("%s %s",n,m);
printf("%s %s\n",n,m);
}

输入12345 56789

但输出是 1234556789 12346

扫描仪认为“12345 56789”是一个完整的字符串。

这是怎么发生的?我不是指定n只能容纳5个字符吗? 如果我将 n[5] 减少到 n[1] 输出为 156789 56789

当我将整数作为输入并尝试使用 snprintf 进行转换时:

#include <stdio.h>
#include <stdlib.h>
int main(){
    
    int g,w,cnt=0;
    
    scanf("%d %d",&g,&w);
    
    char n[5], m[5];
    snprintf(n,6,"%d",g);
    snprintf(m,6,"%d",w);
    printf("%s\n",n);
    printf("%s\n",m);

}

如果我输入12345 67894 输出为 1234567894 67894。

和以前一样的问题。 我可以做什么来解决这个问题?

c string input
1个回答
0
投票

在 C 中定义用于存储字符串的 char 数组时,必须考虑 scanf 隐式放入数组中的字符串结尾字符 ( )。 因此,如果定义 char[5],您将能够存储由 4 个字符组成的字符串,因为数组的最后一个位置用于 .

尝试以这种方式更改您的代码:

#include <stdio.h>
int main(){

char n[6],m[6];
scanf("%s %s",n,m);
printf("%s %s\n",n,m);
}
© www.soinside.com 2019 - 2024. All rights reserved.