C语言字符串拼接后存入一个新的数组
时间: 2024-03-18 14:40:53 浏览: 199
在C语言中,可以使用sprintf函数将两个字符串拼接并存入一个新的数组中。sprintf函数的第一个参数是目标字符串,第二个参数是格式化字符串,其中可以使用%s表示要拼接的字符串,例如:
```
char str1[50] = "Hello";
char str2[20] = "world!";
char result[70];
sprintf(result, "%s %s", str1, str2);
```
执行该代码后,result的值将变为"Hello world!"。需要注意的是,要确保目标数组的长度足够容纳拼接后的字符串,否则会导致缓冲区溢出的问题。
相关问题
不采用系统库函数,自定义一个函数将你的学号作为一个字符串存入一个字符数组,采用该函数将你的姓名作为一个字符串存入另一个字符数组,不采用系统库函数,自己编写--个函数将姓名字符串和学号字符串连接成一个字符串,再编写一- 个函数在连接后的字符串姓名和学号之间加入下划线字符’’,并输出这个字符串。编写main函数测试这些函数。 c语言
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
void str_cpy(char *dest, char *src) {
while (*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
void str_cat(char *dest, char *src) {
while (*dest != '\0') {
dest++;
}
while (*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
void add_underline(char *str) {
char *p = str;
while (*p != '\0') {
p++;
}
while (p != str) {
*(p+1) = *p;
p--;
}
*(str+strlen(str)) = '_';
}
int main() {
char stu_id[20] = "2021000000";
char name[20] = "Tom";
char result[40];
str_cat(result, name);
str_cat(result, stu_id);
add_underline(result);
printf("%s", result);
return 0;
}
```
这段代码中,我们首先定义了三个字符数组,分别用于存储学号、姓名和结果。然后,我们编写了三个函数,分别实现了字符串复制、字符串拼接和在字符串中添加下划线的功能。
在 main 函数中,我们先将姓名和学号拼接起来,然后在拼接后的字符串中添加下划线,最后输出结果即可。
需要注意的是,为了方便起见,我们在编写字符串拼接和添加下划线的函数时,都假设了两个字符串都以 `\0` 结尾。因此,在实际编写时,需要保证输入的两个字符串都是以 `\0` 结尾的。
输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]…统计共有多少个整数,并输出这些数。用C语言
### 回答1:
以下是用 C 语言实现这个需求的代码示例:
```
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[] = "A123x456 17960? 302tab5876";
int len = strlen(str);
int a[100];
int count = 0;
int num = 0;
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
num = num * 10 + (str[i] - '0');
} else {
if (num != 0) {
a[count++] = num;
num = 0;
}
}
}
if (num != 0) {
a[count++] = num;
}
printf("一共有 %d 个整数:\n", count);
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
程序首先定义了一个字符串 `str`,其中包含数字和非数字字符。
然后,通过一个循环扫描字符串的每一个字符,如果该字符是数字,则将其转换为数字,并加到当前数字的值上。如果该字符不是数字,则将当前数字存入数组 `a`,并将当前数字置为 0。
最后,如果字符串的最后一个字符是数字,则需要将该数字存入数组 `a`。
最后,程序输出共有多少个整数,以及这些整数的值。
### 回答2:
题目要求我们编写一个程序,将输入的字符串中连续的数字作为一个整数,并存放到数组a中,并统计共有多少个整数,并输出这些数。
首先,我们需要定义一个字符数组来存储输入的字符串,并定义一个整型数组a,用于存放数字。同时,我们还需要定义一个变量count,用于记录整数的个数。
然后,我们需要遍历输入的字符串,逐个字符进行判断。如果当前字符是数字,则将其与前一个字符拼接起来形成一个新的数字,并将其转换为整数存放到数组a中。如果当前字符不是数字且前面已经有连续的数字,则说明前面的数字已经结束,我们可以将个数增加1,并将数组a的下标后移。
最后,通过循环遍历数组a,输出其中的整数。
以下是示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int a[100];
int count = 0;
int i, j;
int num = 0;
printf("请输入字符串:");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) { // 判断当前字符是否是数字
num = num * 10 + (str[i] - '0');
} else if (num > 0) { // 前面有连续的数字
a[count++] = num;
num = 0;
}
}
if(num > 0){ // 处理最后一个整数
a[count++] = num;
}
printf("共有%d个整数:", count);
for (j = 0; j < count; j++) {
printf("%d ", a[j]);
}
printf("\n");
return 0;
}
```
运行程序后,输入一个字符串,例如"A123x456 17960? 302tab5876",则输出为"共有3个整数:123 456 17960"。
### 回答3:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
int main() {
char str[MAX_SIZE];
int a[MAX_SIZE];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int count = 0; // 统计整数个数
// 遍历字符串
for (int i = 0; i < len; i++) {
if (str[i] >= '0' && str[i] <= '9') {
int num = 0;
// 提取连续的数字
while (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + (str[i] - '0');
i++;
}
a[count] = num;
count++;
}
}
printf("共有%d个整数,它们分别是:\n", count);
// 输出整数数组a
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
阅读全文