當前位置:首頁 » 編程語言 » c語言數據傳輸
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數據傳輸

發布時間: 2023-01-11 05:47:35

c語言不同類型數據傳遞的問題

浮點數使用ieee-754標准,單精度和雙精度浮點數長度和格式都不同,直接復制時需要考慮格式是否匹配的問題。而且你接收的字元還存在大、小端問題,需要根據實際情況來轉換。

❷ C語言規定,簡單變數做實參時,它和對應形參之間的數據傳遞方式是

答案是B,單向的值傳遞

簡單變數做實參時,相應的形參變數也是簡單變數,它們之間的數據傳遞方式是單向的值傳遞,即數據只能由實參傳到形參,形參值的改變不影響實參值的變化。

(2)c語言數據傳輸擴展閱讀:

形參和實參的特點:

1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。

2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。

3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。

4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。

參考資料:網路——形參

❸ 在C語言中,函數實參與形參之間的數據傳遞方式是( )傳遞方式。

值傳遞。
實參與形參數據傳遞有兩種方式:值傳遞與地址傳遞。
地址傳遞的形式為
int
&a=b;
也就是我們所說的引用,但引用只有C++中有,所以C語言都是值傳遞的。
有些人有誤解:認為C語言的int
*p=&a;不也是按地址傳遞嗎?其實不是這樣的。
深入理解值傳遞與地址傳遞就會發現:
值傳遞是:把實參的值傳給一個變數(形參)。所以int
*p=&a也是把a的地址值傳給了指針變數p
地址傳遞是:直接把地址傳進來,沒有賦給任何變數,這樣在函數體內對形參的操作也就是對實參地操作。有這種功能的也就是引用(&)了。

❹ C語言規定,調用一個函數時,實參變數和形參變數之間的數據傳遞方式是什麼

函數只有兩種傳遞方式:

1、值傳遞,又稱單向傳遞,只能把實參數值傳給形參 ,形參最後的結果不影響實參(形參改變大小 ,實參大小不變)。

2、址傳遞,通過指針,把實參的地址給形參,形參的大小可以影響實參。

(4)c語言數據傳輸擴展閱讀:

實參變數和形參變數之間的調用過程

1、函數的形參列於函數聲明中,在函數定義的函數體內使用,在未出現函數調用時,形參不佔內存中的存儲單元。

2、將實參的值傳遞給形參,當函數被調用時,實參列在函數名後面的括弧里,執行函數調用時,實參被傳遞給形參。

3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。

4、通過return語句將函數值帶回到主調函數。

5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。

❺ c語言 如何把數據文件中的數據傳給數組

1.
先打開文件。
2.
自己寫過getline函數,取文本的一行保存到一個字元串中。
3.
用malloc函數給line分配空間。
4.
對於第一行,取特定的字元串line取代替它,如果第二行是空行也這么做
5.
在建立一個字元串數組,用strp將他們放入字元串數組strline[i]中。
6.
構造一個結構數組,將得到的字元串line用strtok(line,"
")函數分開依次放入結構數組中的字元串成員中,記得不能用字元串數組的字元串,strtok函數會改變字元串的,而line就無所謂了。
7.
知道用getline函數返回一個負數(一般我用負數標記文檔讀寫完畢)。結束讀操作。
8.
現將前面的名字以及空行寫入new的文本中,用putline函數(將字元串寫入文檔中)。
9.
再從字元串數組逆序寫入new的文本中。
10.
如果結構數組不用了,就釋放strp分配的空間,並且以及line的空間,前面兩行無所謂,反正占的空間不大。所有用數組,還是動態分配都沒什麼大的關系。

❻ C語言中如何傳數據才能保證數據正確

1、傳遞數據類型要一致。
2、考慮傳遞的是值傳遞還是地址傳遞。值傳遞不會影響原始數據,地址傳遞如果對數據進行修改會直接影響到原始數據。

❼ C語言socket編程實現網路數據傳輸

僅供參考

// serverTCP.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
using namespace std;
long long cnt = 0;
void transFile(SOCKET s)
{
printf("新子服務%d......",cnt);
send(s,"welcome to TCP FILE SERVER !",strlen("welcome to TCP FILE SERVER !")+1,0);

char Buf[BUFSIZE];

FILE *fp;
//printf("客戶端已打開\n請輸入存放文件地址:\n");
char FilePath[128]={"0"};
ltoa(cnt,FilePath,10);

if((fp=fopen(FilePath,"wb"))==NULL)
{
printf("文件未打開\n");
return;
}
else
{
send(s,"開始傳送",strlen("開始傳送")+1,0);
//得到文件大小
char Size[20];
long int FileSize=0;
recv(s,Size,21,0);
FileSize=atol(Size);
printf("得到文件大小: %d\n",FileSize);
//開始傳送

char Block[BUFSIZE];
long int x=0;
while (1)
{
x += BUFSIZE;
if(x < FileSize)
{
recv(s,Block,BUFSIZE+1,0);
fwrite(Block,1,BUFSIZE,fp);
}
else
{
recv(s,Block,FileSize+BUFSIZE-x+1,0);
printf("文件接收完畢\n");
fwrite(Block,1,FileSize+BUFSIZE-x,fp);
fclose(fp);
break;
}
}
}
fclose(fp);
closesocket(s);

}
int _tmain(int argc, _TCHAR* argv[])
{

WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(1,1);
int err;
err = WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("伺服器啟動......\n");
}
else
{
printf("伺服器啟動失敗!");
exit(0);
}
SOCKET serSocket = socket(AF_INET,SOCK_STREAM,0);//創建了可識別套接字
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons(PORTBASE);//綁定埠
bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//綁定完成
listen(serSocket,ACESIZE);//其中第二個參數代表能夠接收的最多的連接數

SOCKADDR_IN clientAddr;
int len = sizeof(SOCKADDR);
while(1)
{
cnt++;
SOCKET serConn;
serConn = accept(serSocket,(SOCKADDR*)&clientAddr,&len);//如果這里不是accept而是conection的話。。就會不斷的監聽
if(_beginthread((void (*)(void *))transFile, ACESIZE,(void *)serConn) < 0) return 0;
}

return 0;
}

// clientTCP.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(1,1);
int err;
err=WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("已打開套接字\n");
}
else
{
//進一步綁定套接字
printf("套接字未打開!");
return 0;
}
SOCKET cliSocket =socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
char ip_addr[16]={"127.0.0.1"};
addr.sin_addr.S_un.S_addr=inet_addr(ip_addr);
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);

char ACK[64];
connect(cliSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//開始連接

recv(cliSocket,ACK,sizeof(ACK),0);
printf("%s\n",ACK);
FILE *fp;
int FileSize=0;

char Block[BUFSIZE]={"0"};
char FilePath[128]={"0"};
int i=0;
do
{
printf("請輸入文件地址:\n");
gets(FilePath);
i = 0;
if((fp=fopen(FilePath,"rb"))==NULL)
{
i = 1;
printf("文件打開失敗\n");
}
}while(i);
fseek(fp,0L,SEEK_END);
FileSize=ftell(fp);
printf("待傳送文件大小: %d\n",FileSize);
printf("等待伺服器接受......\n");

recv(cliSocket,Block,sizeof(Block),0);
printf("%s\n",Block);
if(strcmp(Block,"開始傳送")==0)
{
char Size[20];
ltoa(FileSize,Size,10);
send(cliSocket,Size,sizeof(Size),0);
fseek(fp,0L,SEEK_SET);

long int y=0;
char trans[BUFSIZE];
while(!feof(fp))
{
fread(trans,1,BUFSIZE,fp);
y=y+BUFSIZE;
if(y<FileSize)
{
send(cliSocket,trans,BUFSIZE+1,0);
}
else
{
send(cliSocket,trans,FileSize+BUFSIZE-y+1,0);
closesocket(cliSocket);
WSACleanup();
}
}
}
printf("文件發送完畢\n");
fclose(fp);
closesocket(cliSocket);
WSACleanup();
system("pause");
return 0;
}

❽ C語言中如何將結果傳遞給另一個C語言文件

通過函數的傳址參數(引用或指針)或返回值傳遞。
多個人合作時,必須提前約定好介面函數的聲明格式。 (這里的所謂介面函數就是所有可能需要用來互相傳遞結果的函數)

❾ C語言數據傳送

參考代碼:

#include<stdio.h>
intmain()
{
inta[100],i,j;
for(i=0;i<100;i++)
{
if(0==i%2)
{
a[i]=2;
}
else
{
a[i]=1;
}
}
for(j=0;j<100;j++)
{
printf("%d",a[j]);
}
printf(" ");
return0;
}

另外,數組a[100]中沒有a[100]這個元素,C語言中數組元素下標是從0開始的。