关淳 2022-10-20 15:30 采纳率: 73.9%
浏览 29
已结题

我写的这个SStringAssign()好像只能用一次,有人会吗c语言🥹

img


貌似把scanf ("%[^\n]", chars);换成gets(chars);就可以,可是为什么?
#include <stdio.h>
#include <stdlib.h>
#include
using namespace std;

typedef struct SString {
char* ch;
int length;
}SString;

void SStringInit (SString* S)
{
S->ch = NULL;
S->length = 0;
}

void SStringAssign (SString* S)
{
S->ch = (char*)malloc(256sizeof(char));
char chars[256];
scanf ("%[^\n]", chars);
int len = 0;
char
c = chars;
while (*c != '\0')
{
len ++;
c ++;
}
for (int i = 1; i <= len; i++)
S->ch[i] = chars[i-1];
S->length = len;
}

void SStringPrint (SString* S)
{
for (int i = 1;i <= S->length; i++)
printf ("%c", S->ch[i]);
printf ("\n");
}

int main ()
{
SString str1, t;
SStringInit (&str1);
SStringAssign (&str1);
SStringPrint (&str1);
SStringInit (&t);
SStringAssign (&t);
SStringPrint (&t);
return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 10月20日
    • 修改了问题 10月20日
    • 修改了问题 10月20日
    • 修改了问题 10月20日
    • 展开全部

    悬赏问题

    • ¥20 求一个 手机抓包app支付链接
    • ¥15 byte[]转String后值为[object Object]
    • ¥20 STM32 AD7734
    • ¥15 mmrotate官方的test工具死循环
    • ¥15 使用海洋捕食者算法对岔管分岔角进行优化
    • ¥15 isolar-AB软件安装后打开出错
    • ¥15 如何让usb软件在电脑拔插无记录
    • ¥15 ecology9的待办推送外部系统
    • ¥15 Mplus跑出来的数据只有原数据的一半
    • ¥15 vue项目添加全局处理解决一些开发问题